2013-11-04 205 views
0

我的網站有charset = UTF-8,並且mysql DATABASE也設置爲UTF-8編碼。爲什麼我需要mb_convert_encoding才能顯示正確的字符

我的問題是,當我從mysql檢索文本到網站時,我需要使用php函數mb_convert_encoding(@ db_field,'utf-8','iso-8859-1')來正確顯示文本。它看起來像那個系統認爲mysql數據庫是在ISO-8859-1。

回答

4

運行你連接到數據庫後,這一權利:

mysqli_query("SET NAMES utf8"); /* or mysql_query */ 

這是不夠的表中的排序規則設置爲UTF-8,你還需要指定(與此查詢)的編碼是在PHP和MySQL服務器之間的通信期間應該使用
更多詳細信息,請訪問:SET NAMES utf8 in MySQL?

確保UTF-8在任何地方的兼容性都很棘手;我的UTF-8清單如下:

  • 確保每一個源文件被保存爲UTF-8
  • 確保<meta charset="UTF-8" />將出現在所有網頁
  • 確保每個數據庫表設置爲使用UTF- 8
  • 運行SET NAMES utf8連接到數據庫
  • 電話mb_internal_encoding("UTF-8")在腳本的開頭和使用mb_字符串函數在可能的情況
+0

非常感謝,它真的解決了我的問題。但我不明白爲什麼有必要運行此功能。即使那個mysql數據庫已經被設置爲utf8?但是非常感謝,現在正在工作:) – abc

+0

僅僅將表的排序規則設置爲UTF-8是不夠的,您還需要指定PHP和MySQL服務器*在其通信期間應使用的編碼*。添加到我的答案。 –

+0

非常感謝,現在明白了。 – abc

相關問題