2011-11-22 42 views
0

我目前在PHP 5和MySQL主幹上運行一個網站。 MySQL數據庫使用cp1252 West Europe (latin1)編碼和latin1_swedish_cp整理。當我將MySQL數據庫更改爲UTF-8編碼時,應如何更新我的PHP安裝程序?

我想將MySQL數據庫切換爲UTF-8編碼和utf8_general_ci。我不需要幫助轉換MySQL中的內容,因爲我正在處理該內容,因爲它將進入並重新制作網站上的所有內容。假設我爲對話做了正確的事情(儘管我可能不是)。

我知道在php.ini中有設置,如default_charset,默認爲iso-8859-1。我也知道很多PHP的字符串操作函數,如strlen()以及正則表達式,如果我正在處理包含多字節UTF-8字符的字符串時,將無法正常工作,我知道並非所有UTF- 8套。

我需要做什麼PHP服務器端和我的web應用程序來處理從我的數據庫中出來的UTF-8?它是做什麼的?

回答

1

你將不得不建立與數據庫的連接:

mysql_query("SET NAMES 'utf8'"); 

然後與來自MBSTRING模塊替換你的「正規」的字符串函數: http://php.net/manual/en/book.mbstring.php 像mb_strlen,mb_substr等

以及指定UTF-8編碼在需要的地方,例如在htmlentities函數:

echo htmlentities($str, ENT_QUOTES, "UTF-8"); 
+0

一個你對php.ini中的php設置有什麼想法? –

+0

你應該很滿意我在這裏列出的。 php.ini的default_charset用於定義內容類型的HTTP頭字符集,它將被標籤覆蓋你的HTML頁面,我想你已經設置了(?).. – darma

+0

似乎http頭是鏈的進一步上升,應該設置除了meta標籤,甚至不是元標籤定義內容類型每個頁。我是否錯誤地想到了這一點? –

0

參見this函數。

此外,你應該保存所有的文件與utf-8編碼(最好沒有BOM)。

相關問題