MySQL 存儲php中json_encode格式中文問題及解決


1.原因分析:

在存儲到數據庫時,MySQL不會存儲Unicode字符,MySQL僅支持基本的多語種平面字符(0x0000-0xFFFF)。

MySQL5.5.3上,支持補充字符如果你使用utf8mb4編碼。

json_encode中文的時候,會把每個中文字符encode成“\uxxxx”,而存進數據庫的時候,“\”被屏蔽了,直接變成“uxxxx”。

2.解決問題:

選擇其他存儲方式或者進一步轉譯“\”為“\\”,以保留“\”.

3.解決辦法:

1.避免json_encode將中文換成unicode 編碼,php5.4版本已經給JSON新增了一個選項:JSON_UNESCAPED_UNICODE。加上這個選項后,就不會自動把中文編碼了:

$test = json_encode("深圳",JSON_UNESCAPED_UNICODE);

2.先將中文字段urlencode,json_encode后,再用urldecode,也可以保證中文不會被轉Unicode:

$test = urldecode(json_encode([urlencode('簡介')]));

3.進一步轉義“\” 為 “\\” 避免Unicode中文前“\” 被MySQL當成特殊字符去除:

$test=addslashes(json_encode('中文'));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM