将某个字符串$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 );编码