搜尋
首頁php教程php手册笔记:PHP查询mysql数据后中文字符乱码

笔记:PHP查询mysql数据后中文字符乱码

Jun 06, 2016 pm 07:48 PM
mysqlphp中文亂碼字元數據新建查詢筆記

新建表Clubs CREATE TABLE `Clubs` ( `id` int ( 11 ) NOT NULL AUTO_INCREMENT, `name` varchar ( 30 ) CHARACTER SET utf8 NOT NULL DEFAULT '' , PRIMARY KEY (`id`)) ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COLLATE = utf8_unicode

 

新建表Clubs

<span>CREATE</span> <span>TABLE</span><span> `Clubs` (
  `id` </span><span>int</span>(<span>11</span>) <span>NOT</span> <span>NULL</span><span> AUTO_INCREMENT,
  `name` </span><span>varchar</span>(<span>30</span>) <span>CHARACTER</span> <span>SET</span> utf8 <span>NOT</span> <span>NULL</span> <span>DEFAULT</span> <span>''</span><span>,  
  </span><span>PRIMARY</span> <span>KEY</span><span> (`id`)
) ENGINE</span><span>=</span>MyISAM AUTO_INCREMENT<span>=</span><span>1</span> <span>DEFAULT</span> CHARSET<span>=</span>utf8 COLLATE<span>=</span>utf8_unicode_ci;

 

id  name

1   程序员
2   架构师
3   产品经理
4   测试

如果在phpMyAdmin中查看name字段内容就是?,修改MySQL 字符集选择UTF8,MySQL 连接校对选择utf8_general_ci

 

在mysql中查看字段内容为正确的中文字符后,通过mysql_query('select * from clubs')查询

用var_dump打印查询结果如下,所有的中文汉字都变成了?

<span>array</span> (size=4<span>)
  </span>0 => 
    <span>array</span> (size=2<span>)
      </span>'id' => <span>string</span> '1' (length=1<span>)
      </span>'name' => <span>string</span> '???' (length=3<span>)
  </span>1 => 
    <span>array</span> (size=2<span>)
      </span>'id' => <span>string</span> '2' (length=1<span>)
      </span>'name' => <span>string</span> '???' (length=3<span>)
  </span>2 => 
    <span>array</span> (size=2<span>)
      </span>'id' => <span>string</span> '3' (length=1<span>)
      </span>'name' => <span>string</span> '????' (length=4<span>)
  </span>3 => 
    <span>array</span> (size=2<span>)
      </span>'id' => <span>string</span> '4' (length=1<span>)
      </span>'name' => <span>string</span> '??' (length=2)

解决办法:在执行mysql_query之前先执行

<span>mysql_query</span>("set names utf8");

 

如果还不行,请确认php文件编码格式是否是utf8格式,同时在php文件头增加

<span>header</span>("Content-Type:text/html;charset=utf-8");

 

解决问题的根本办法就是把相关的编码格式都统一为utf8。

 

查询结果中文字符没问题了,但是$clubs转化为json时,name字段中文字符却又变了

<span>$clubs</span>=json_encode(<span>$clubs</span><span>);
</span><span>echo</span>(<span>$clubs</span>);

输出内容如下

[{"id":"1","name":"\u7a0b\u5e8f\u5458"},{"id":"2","name":"\u67b6\u6784\u5e08"},{"id":"3","name":"\u4ea7\u54c1\u7ecf\u7406"},{"id":"4","name":"\u6d4b\u8bd5"}]

解决方案:

<span>foreach</span> ( <span>$clubs</span> <span>as</span> <span>$key</span> => <span>$value</span><span> ) {             
                 
    </span><span>foreach</span>(<span>$value</span> <span>as</span> <span>$k</span>=><span>$v</span><span>){
                     
        </span><span>$clubs</span>[<span>$key</span>][<span>$k</span>] = <span>urlencode</span>(<span>$v</span><span>);
    }              
                 
}             

</span><span>$clubs</span>=json_encode(<span>$clubs</span><span>);
</span><span>echo</span>(<span>urldecode</span>(<span>$clubs</span>));

原因:

json_encode只支持UTF8编码的字符,使用JSON作为提交和接收的数据格式时,字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,就极容易出现中文乱码的问题。解决办法是在用js或者PHP处理JSON数据的时候都采用UTF8的形式。

 

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境