2014-03-07 72 views
0

我的數據庫表是UTF-8,但是當通過PHP查詢時,字符會出現不同。mysql_query返回外來字符的錯誤字符編碼

當查看數據庫中的數據看起來是這樣的:

汕头å›åŽå¤§é…’店 

但是在PHP它出來作爲

汕头åÂÂââ 

我注意到,當我在插入之前BASE64_ENCODE編碼數據進入mysql,然後解碼出來,然後在PHP和瀏覽器中正確顯示,並顯示在數據庫中:

汕头å›åŽå¤§é…’店 

但是有數據我無法先編碼它,所以我不能總是這樣做,所以我想知道爲什麼mysql_query使它出現不同。我試過很多東西

  1. 查詢之前做:

    的mysql_query( 「設置character_set_results = 'utf-8'」);

mysql_query("SET NAMES UTF8"); 
  1. 查詢之前這樣做:

    mb_internal_encoding( 'UTF-8'); mb_http_output('UTF-8'); mb_http_input('UTF-8');

  2. 這是我的html頁面頁眉

    「元HTTP的當量=」 Content-Type的 「內容=」 text/html的;字符集= UTF-8" /」使用有問題的領域utf8_decode

  3. ,但似乎使情況變得更糟

但它並沒有不同的輸出,我可以同時看到正確的(在BASE64_DECODE )和不正確的字符在同一頁

謝謝!

+0

有無你還試圖說明你的HTML中的字符集是utf-8? –

+0

是的,我在那裏,它不會有所不同,我可以看到問題一和在同一頁上工作的問題 – user2760338

+0

嘗試在頁面頂部的php代碼中添加這個'header(「Content - 類型:application/html; charset = utf-8「);' – John

回答

-1

好的,我相信Cake 1.2正在嘗試對數據進行某種類型的轉換或將mysql告訴某處。

從CakePHP中的database.php中刪除編碼=>'utf8'後它工作正常,當MYSQL表爲UTF8時,無需在PHP代碼或MYSQL中的任何位置設置UTF8!

而且另一個問題是,我認爲舊的數據存放不當在數據庫中,或許該表不是UTF8之前,所以當PHP讀取的CSV文件中的數據就存儲它爲亂碼(不正確)的數據