我在ISO 8859-1下編寫了一個php項目,出於一些技術原因,我想用UTF-8編碼該項目。什麼是更好的方式來做到這一點?我害怕丟失像法國口音等特殊字符。感謝您的建議。從ISO 8859-1到UTF-8的項目轉換
回答
你應該嘗試使用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()不管是什麼框架,您使用(如果你使用任何)。 把它放到包含所有類和東西的主文件中。
感謝Kristinn的幫助,我改變了環境。下次我會照顧編碼的東西。 – 2009-12-01 18:20:28
我認爲它是'default_charset',而不是'default_encoding' – 2012-02-19 18:32:08
使用iconv轉碼所有文件。更改任何和所有的http標題或元標記。利潤。
這裏有一個關於你的問題我採取的 - 你想生成的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。否則,你會在頁面的左上角出現一個奇怪的非空白字符。
總是有一種快速和骯髒的方式 - 使用啞查詢通過MySQL發送呈現的HTML - 例如, SELECT \ <呈現HTML字符串\>爲'html'。這假設你有MySQL並且它的字符編碼默認爲utf-8(也可以使用set names)。 – 2009-12-01 00:49:58
- 1. 將utf8字符轉換爲iso-88591並以PHP退回
- 2. 從UTF8轉換爲ISO 8859-5,越來越ISO 8859-1代替
- 3. 從UTF8到ASCII的轉換
- 4. 如何將utf8轉換爲iso-8859-7?
- 5. 轉換LATIN1到UTF8在C#
- 6. 將字符串從ISO-8859-5轉換爲UTF8
- 7. 轉換.ISO到.qcow2
- 8. PHP - 如何將字符「\ xea」轉換爲「ê」字符? (ISO-88591 - 重音)
- 9. UTF8到CP1255轉換
- 10. 如何將perl中的utf8轉換爲iso-8859-1
- 11. php分析器抓取ISO的wbesite,將被轉換爲UTF8
- 12. 如何在PHP中將utf8的報價轉換爲iso?
- 13. LATIN1到UTF8轉換問題
- 14. J2k到ISO轉換在java
- 15. 的NSString轉換UTF8
- 16. 轉換ASCII到UTF8編碼
- 17. 轉換UINT8到字符UTF8
- 18. 從utf8轉換爲iso-8859-1後未顯示的丹麥字符
- 19. 有沒有辦法將UTF8轉換爲iso-8859-1?
- 20. 如何將UTF8符號轉換回ISO-8859-1?
- 21. 如何正確地將iso-8859-1轉換爲utf8?
- 22. UTF8轉換
- 23. 從VS2013項目轉換到VS2015一個
- 24. Dojo從非AMD項目轉換到AMD
- 25. 如何將Rails項目中的Mysql編碼utf8轉換爲utf8mb4
- 26. Python的編碼ISO爲utf8
- 27. 將數組值從ISO-8859-1轉換爲UTF8以進行JSON編碼
- 28. jQuery UI/mobile的ISO-88591 charset/text-encoding可能嗎?
- 29. VS2008到VS2010項目轉換
- 30. perl utf8從iso-8859-1編碼返回不同的結果到javascript utf8編碼
這可能有所幫助:http://stackoverflow.com/questions/910793/php-detect-encoding-and-make-everything-utf-8 – Aziz 2009-11-30 23:19:24
我假設你正在討論將PHP源代碼文件保存爲UTF -8而不是ISO-8859-1:無論如何您測試了嗎? ISO-8859-1字符也落在相同的UTF-8範圍內(但反之亦然)。如果是這樣,轉換時你到底有什麼問題? – BalusC 2009-11-30 23:20:58
@BalusC這不完全正確。它們都有一個共同的子集,稱爲ascii,但iso-8859-1的一半在utf-8中編碼不同。 – troelskn 2009-12-01 00:01:34