2009-11-30 14 views
1

我在ISO 8859-1下編寫了一個php項目,出於一些技術原因,我想用UTF-8編碼該項目。什麼是更好的方式來做到這一點?我害怕丟失像法國口音等特殊字符。感謝您的建議。從ISO 8859-1到UTF-8的項目轉換

+0

這可能有所幫助:http://stackoverflow.com/questions/910793/php-detect-encoding-and-make-everything-utf-8 – Aziz 2009-11-30 23:19:24

+0

我假設你正在討論將PHP源代碼文件保存爲UTF -8而不是ISO-8859-1:無論如何您測試了嗎? ISO-8859-1字符也落在相同的UTF-8範圍內(但反之亦然)。如果是這樣,轉換時你到底有什麼問題? – BalusC 2009-11-30 23:20:58

+0

@BalusC這不完全正確。它們都有一個共同的子集,稱爲ascii,但iso-8859-1的一半在utf-8中編碼不同。 – troelskn 2009-12-01 00:01:34

回答

1

你應該嘗試使用shell命令的iconv到PHP文件處理latin1(ISO-8859-1)爲UTF-8編碼。

之後,你應該確保PHP使用UTF-8作爲默認編碼(default_encoding變量在php.ini,如果我沒有記錯)。如果沒有,那麼你可以用你的項目的ini_set()來設置它。

後,您必須將數據庫轉換爲UTF-8或使用的quickfix像這樣(爲MySQL):

mysql_query("SET NAMES 'utf8'"); 

當然你只是替補的mysql_query()不管是什麼框架,您使用(如果你使用任何)。 把它放到包含所有類和東西的主文件中。

+0

感謝Kristinn的幫助,我改變了環境。下次我會照顧編碼的東西。 – 2009-12-01 18:20:28

+0

我認爲它是'default_charset',而不是'default_encoding' – 2012-02-19 18:32:08

0

使用iconv轉碼所有文件。更改任何和所有的http標題或元標記。利潤。

0

這裏有一個關於你的問題我採取的 - 你想生成的HTML(通過PHP)是UTF-8兼容?請注意,HTML 4.x標準基於iso-8859-1,XHTML是基於utf-8還是iso-8859-1尚不清楚。當然,純XML是utf-8。

(1)因此,拼圖的第一塊是選擇你DOCTYPE爲您呈現的HTML。

(2)確保您添加的語言字符集的meta標籤(charset=utf8)等

(3)採取呈現PHP/HTML字符串,並通過iconv或者通過外殼使用系統發送調用或通過一些PHP API方法。

生成的呈現HTML將採用utf-8編碼。客戶端瀏覽器需要設置爲通過utf-8而非西方latin1呈現HTML。否則,你會在頁面的左上角出現一個奇怪的非空白字符。

+0

總是有一種快速和骯髒的方式 - 使用啞查詢通過MySQL發送呈現的HTML - 例如, SELECT \ <呈現HTML字符串\>爲'html'。這假設你有MySQL並且它的字符編碼默認爲utf-8(也可以使用set names)。 – 2009-12-01 00:49:58