將某個字符串$str 進行json編碼,即json_encode($str)後變成Unicode字符存入數據庫,會發現中文的長度明明沒有超過設置的字符長度最大值,可是卻拋出字段長度過長錯誤;
查看數據庫發現該字段的漢字字符被轉義成一些特殊的數字字母串(非unicode字符)php
MySQL 僅支持從基本的多語種平面字符 (0×0000-0xFFFF)。請嘗試存儲一個同義詞相反:)
MySQL 5.5.3 以上 (其中還沒有 GA), 支持補充字符若是您使用 UTF8MB4 編碼。
json_encode中文的時候,會把每一箇中文字符encode成「\uxxxx」, 而存進數據庫的時候,「」被屏蔽了,直接變成」uxxxx」mysql
方法二: json_encode(urlencode($str)) 將漢字先進行urlencode();而後json_encode();
取數據後urldecode();即:json_encode(urlencode($str)) 從數據庫取出來:urldecode($str)sql
方法三: $str = json_encode($str);數據庫
$test= addslashes( $str ); //或json
$test= mysql_escape_string( $str );編碼