2009-11-22 57 views
2

我想將我現有的PHP網頁轉換爲使用UTF-8編碼。切換網站編碼從ISO-8859-1到UTF-8

要做到這一點,我也做了以下幾件事:

  1. 指定UTF-8作爲我的網頁開始在元標籤內容的字符集。
  2. 在php.ini中將default_charset更改爲UTF-8。
  3. 指定UTF-8作爲php.ini文件中的iconv編碼。
  4. 使用:AddDefaultCharset UTF-8在我的.htaccess文件中指定了UTF-8。

畢竟,當我回顯mb_internal_encoding()時,它顯示爲ISO-8859-1。我在這裏錯過了什麼?我知道我可以使用auto_prepend來附加一個將默認編碼更改爲UTF-8的腳本,但我只是想了解我錯過了什麼。

感謝

+0

該函數是否有可能報告PHP文件本身? – 2009-11-22 22:21:27

回答

4

mb_internal_encoding()並不影響每個腳本的輸出變量如果使用multibyte string functions以及POST和GET輸入的轉換,則會影響默認編碼。

只需使用

mbstring.internal_encoding='UTF-8' 

的php.ini文件設置,或與編程:的MB_功能

mb_internal_encoding('UTF-8'); 

說起,你需要重寫腳本,以使用這些,例如mb_strlen()而不是strlen.()

還要檢查HTTP內容類型標頭是否正在輸出,但從你做的應該沒問題。

如果您使用的是數據庫,您也必須將其轉換,並指定在連接到數據庫時使用UTF-8。

+0

謝謝。 mbstring.internal_encoding(在php.ini中)工作完美,並且是我正在尋找的,與使用php在每個頁面上設置它相比。 – justinl 2009-11-22 23:22:35

0

的文檔指出,您可以設置使用

/* Set internal character encoding to UTF-8 */ 
mb_internal_encoding("UTF-8"); 

這應該擺脫你的問題:)

+0

是的,我知道我可以使用該函數設置編碼,但在每個頁面上設置內部編碼似乎是多餘的,當我確定存在指定編碼的全局位置時。 – justinl 2009-11-22 22:37:26