2012-08-25 216 views
0

我有一個PHP/MySQL應用程序,它需要在後臺使用UTF-8字符(UTF-8字符不會顯示在屏幕上)。 UTF-8字符來自PHP cURL請求。

我需要做些什麼才能使PHP和MySQL正常工作,使用UTF-8字符?PHP/Mysql字符集

  1. 我是否需要設置在php.ini default_charset = utf-8?或者這個 只在數據顯示在屏幕上時才使用?

  2. 我是否需要爲我的數據庫,表和列設置字符集/排序規則爲utf8/utf8_general_ci?

  3. 我讀到,還有一個像MySQL的connection character sets這樣的事情。這真的很重要嗎?

  4. 還有什麼我需要做的嗎?

感謝您的幫助。

+0

你有沒有嘗試過你的任何方法呢? – Charlie

+0

我還不能真正測試外國字符,我只是在準備。 – Hope4You

+1

對於內部處理,[mb_internal_encoding](http://php.net/manual/en/function.mb-internal-encoding.php)會很有用。此外,在獲取任何結果之後,您可能希望對數據庫執行'SET NAMES'utf8';'查詢。 – ACJ

回答

0

您可以使用下面的PHP內置函數ISO字符爲utf8字符集

utf8_encode(CHARACTERS); 
1

考慮使用UTF-8的一切,PHP文件中,HTML編碼和數據庫,它會爲你節省很多麻煩。您不需要在編碼之間進行轉換,您可以使用所有編碼的所有可能字符,並且您可以不使用HTML實體。

我收集了一些關於如何使您的網站UTF-8 only的提示。如果你已經有了一個不同編碼的數據庫,這沒有問題,只要告訴連接對象提供UTF-8即可。

$db = new mysqli($dbHost, $dbUser, $dbPassword, $dbName); 
$db->set_charset('utf8'); 
+0

中設置這個值。將數據庫聲明爲utf8還是需要將表和列設置爲utf8足夠了? – Hope4You

+0

@ Hope4You - 將charset設置爲連接對象就足夠了,不需要改變數據庫本身的任何內容。即使不同的表格應該有不同的編碼,連接對象也會將UTF-8傳遞給你的php腳本。 – martinstoeckli