1. 杨乐多博客首页
  2. 技术杂谈
  3. PHP

PHP中json_encode编码时避免中文被unicode

最近处理多语言内容翻译转换问题,由于被翻译的内容有字符串,也有多维数组且数组很庞大。为了实现快速高效处理内容翻译替换操作,于是想到了用json函数将多维数组转换成字符串,然后再去替换指定内容。但是实现过程中遇到中文被json编码成unicode了,反斜杠也被转义了,这样导致无法有效替换中文相关内容。查阅相关资料后,发现json_encode有指定参数正好可以解决此类问题。说了这么多,现在来看代码吧^_^

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

$value 不用多做介绍了,主要介绍可选参数 $options
$options 由以下常量组成的二进制掩码(整型数字):
JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR

这里我们要说的是以下两个二进制掩码参数:

JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 256
JSON_UNESCAPED_SLASHES (不转义反斜杠,对应的数字 64

通常json_encode只能传入一个常量,如果需要同时使用2个常量,则可以这样处理:

json_encode($value, 320);

因为 JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320

原创文章,作者:iConan,如若转载,请注明出处:https://www.aspyc.com/archives/578.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据