PHP json_encode 中文
来源:互联网 发布:怎样做淘宝客网站 编辑:程序博客网 时间:2024/06/06 08:47
背景
在做项目的时候,需要存储用户的操作行为,所以把操作的参数json_encode 后放入的数据库。按照当时的估计所有参数的长度不超过300字,为了以后的扩展,所以在数据库把这个字段的设置成varchar(500)。
问题
把问题简化一下,比如只有两个参数email和content然后进行json_encode后存入数据库
$parameters = array( 'email' => 'shijie@gmail.com', 'content' => '我在用json_endcode做测试',); $parameters = json_encode($parameters);
把$parameters 存入到数据库中, 数据库中存储的内容显示的布置中文是unicode编码。在一次操作的过程中,由于content的长度为100个中文,导致json_encode的后的内容存入数据库后被截断(当插入的长度超过数据库字段的长度后,内容会被截断)。
分析
email加上content的内容的长度加起来不应该超过200,怎么会被截断呢?后来发现是json_encode的问题,因为json_encode时把中文进行的unicode编码,这样一个中文占用的就不是1个字了,而是6个字,比如中国,unicode表示是“\u4e2d\u56fd“这样就会导致超长的情况发生。所以进行json_encode并且需要存储到数据库的时候需要注意这个问题。
解决方法
json_encode函数的第二个参数options设置成JSON_UNESCAPED_UNICODE即可,如下所示
json_encode($parameters, JSON_UNESCAPED_UNICODE)
注意,使用此参数的php版本需要>=5.4.0
参考文章
- 官方手册
- 让Json更懂中文(JSON_UNESCAPED_UNICODE)
阅读全文
0 0
- PHP json_encode 中文
- PHP json_encode中文乱码解决方法
- PHP json_encode中文乱码解决方法
- PHP json_encode中文乱码解决方法
- PHP json_encode中文乱码解决方法
- PHP json_encode中文乱码解决方法
- PHP json_encode中文乱码解决方法
- php json_encode中文unicode问题
- php json_encode 中文乱码解决方法
- php json_encode 中文乱码解决方法
- PHP的json_encode处理中文
- php json_encode 中文转码
- PHP json_encode 函数中文乱码
- PHP函数json_encode中文乱码解决
- PHP的json_encode中文被转码的问题
- php json_encode 中文乱码的解决方法
- php json_encode 中文乱码的解决方法
- php json_encode json_decode 操作中文字符
- Android判断前后台状态
- selenium+Java自学辛酸史
- 路由
- 判断IE各版本浏览器的最直接有效的方式
- Java反射机制详解
- PHP json_encode 中文
- 文章标题
- TestNG运行时参数说明
- norflash_nandflash_SDRAM的区别及作用
- Could not get unknown property 'ANDROID_BUILD_SDK_VERSION' for project ':daternagepicker' of type or
- Oracle: Ignore 参数在Oracle 的Exp/imp的意义
- bzoj 3319: 黑白树 (并查集)
- 二进制编码 小记
- static关键字详解