2009-12-18 199 views
1

我需要保存這個數據庫上(MySQL的),並顯示了回去。 (我的數據庫是utf_general_ci)字符編碼問題

我αмiиvisibłєłiкєαiя--- 我αмαSiмρøяŧαиŧαSøxygєи--- 我αмłiviиgiиŧЋєwøяłdøƒмydяєαмz 我αмαłwαysŧЋєяє到ЋєłρøŧЋєяz--- 我αм繁忙,但иєvєяigиøяєαиyøиє 我αмŧЋєøиєwЋøcαяєz--- 我łøvє到sєєøŧЋєяłαugЋiиg 我αмŧЋєøиєwЋøbøяяøwøŧЋєяzsøяяøw 我αмŧЋєøиєwЋøzиαugЋŧy但иicє 我αм失去iимyŧЋøugЋŧs --- Iłøvєŧøŧαłк--- 我łøvє到sЋαяє--- 我αмяєαdy去αиywЋєяє--- 我łøvє到ƒły但døи'ŧЋαvєwiиgs- 我wαиŧ太ŧøucЋŧЋєsкyłiмiŧs--- 我αмєvił但иøŧdєvił- - 我иєvєяƒøłłøwαиyŧяєиd--- 我αмƒuиłøviиg--- suм​​ŧiмєłøvє到bєαłøиє--- 我łøvє到łivє---

然而,當數據被保存和檢索,這就是我得到

¢?���AA±1.1一節AA£AI ¿½Ã�Ã�Ã�ÃAA£¢?�¥â�� ¢?�ï& iqu

任何幫助嗎?是否可以更改數據庫的排序規則或某些可以處理此問題的PHP函數?

+1

重複http://stackoverflow.com/questions/1920777/character-encoding-problem – 2009-12-18 07:29:50

+0

嘗試在下面的答案中的所有內容。從phpmyadmin一切正常,但不工作從我的網站:(可能是什麼原因? – 2009-12-26 08:04:05

回答

9

你需要使用「集名稱UTF8」,以確保您的服務器重新使用UTF-8字符集發送結果。例如:

$dbconn = mysql_connect("localhost", "user", "pass") or die(mysql_error()); 
      mysql_select_db('database', $dbconn) or die(mysql_error()); 
      mysql_query("SET NAMES 'utf8'"); 
+0

這實際上工作! – 2009-12-18 15:06:29

+0

但當我插入相同的值一切都熄滅,這是顯示Æ – 2009-12-18 15:14:41

+0

你可以發佈您的INSERT語句嗎? – BenTheDesigner 2009-12-18 16:13:50

5

我必須指向你走向喬爾的文章,題爲The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。本文解釋了什麼是字符編碼,爲什麼使用它們,以及如何管理它們。

您的數據顯然包含大量來自各種範圍的Unicode字符,因此您必須瞭解PHP和MySql如何處理字符編碼(在您的配置中)以及要調用哪些函數以確保編碼在正確的時間正確翻譯。您粘貼的示例(不正確)數據表明確實存在編碼不匹配的情況。

1

確保MySQL的mysql_query("SET NAMES 'utf8'");運行進行數據傳輸,然後還要確保每個頁面發送一個UTF-8頭。

header('Content-Type: text/html; charset=utf-8');

此外,閱讀Am I correctly Supporting UTF-8仔細檢查所有的一切,運行一些other test data通過它,以確保它的工作原理。並且您在每個頁面加載can test for UTF-8

最後,請確保瀏覽器有你想要的字符集來使用安裝,因爲一些新的像Chrome瀏覽器不會自動使用某些字符集。但是,他們都使用UTF-8,所以請確保您發送該頭文件!

1

要使用特殊字符編碼沒有問題,儘量遵循這一規則4:

  1. 創建utf8_general_ci整理的數據庫字段
  2. 使查詢請求mysql_query(「集名稱‘UTF8’;」);任何連接後(需要MySQL的5)
  3. 把元字符集UTF8代碼在HTML頭塊
  4. 讀取和寫入字符串爲db,並沒有使用函數utf8_encode或其他功能

本文來源於到html here

4

嘗試以下步驟:

  1. 確保您所有的數據庫字段設置爲存儲UTF-8數據(utf8_general_ci)。
  2. 在連接到數據庫執行以下查詢:SET NAMES 'utf8';
  3. 保存您的PHP文件爲UTF-8無BOMthere is a nice free text editor for Windows,讓您可以輕鬆地改變(狀態欄上的)文件的編碼,請選擇UTF-8 Plain

但是,如果您從用戶接收數據(通過GET,POST或COOKIE參數),您可能需要遵循一些additional steps described in this answer

此外,關於以下meta標籤:

<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 

或者等價的PHP頭:

header('Content-Type: text/html; charset=utf-8'); 

你只需要那些顯示 UTF-8的數據,不會干擾與存儲過程,雖然它不傷害使用它,當然。 =)