php 中解决json中文乱码的函数_PHP教程
echo json_encode(array(123213,'中国'));
{"platformid":"123213","userid":"1023","username":"u00b7u00f0u00b5u00b2u00c9u00b1u00b7u00f0u00ccu00fc"}
我们会发现,英文可以正确解析,但中文就出来u00b7u00f0u00b5u00b2u00c9u00b1u00b7u00f0u00ccu00fc哦,这可能是unicode编码,但我没测试过只是自己猜的。下面我们来看一款解决json中文乱码的函数
private function to_utf8($in)
{
if (is_array($in)) {
foreach ($in as $key => $value)
{
$out[$this->to_utf8($key)] = $this->to_utf8($value);
}
}
elseif(is_string($in))
{
if(mb_detect_encoding()($in) != "utf-8")
return utf8_encode($in);
else
return $in;
}
else
{
return $in;
}
return $out;
}
1.把$usr->username直接输出,页面头设置charset=utf-8.乱码
2.echo json_encode($usr)输出username=null
3.页面头设置为charset=gbk,输出正确->可以确定原编码为gbk
最后通过ie,chrome,firefox测试得出结论:
1.保证页面字符集与数据库教程一致,输出一定正常 。
2.做json_encode时保证数据编码是utf-8,json_decode正常。
3.如果要对非utf-8字符做json_encode,先转换成utf-8。
4.对非utf-8字符做json_decode的时候,千万不能忘记转换成原先的编码,否则会输出乱码!!
推荐阅读
-
php中解析带中文字符的url函数分享
-
php5.4以下版本json不支持不转义内容中文的解决方法,
-
php 中文乱码的解决方法大集
-
php ucwords() 函数将字符串中每个单词的首字符转换为大写,ucwords大写_PHP教程
-
PHP中iconv函数转码时截断字符问题的解决方法,iconv截断_PHP教程
-
pdo连接数据类与中文乱码解决方法_PHP教程
-
解析如何屏蔽php中的phpinfo()函数_PHP教程
-
UCenter中的一个可逆加密函数authcode函数代码_PHP教程
-
PHP中in_array函数使用的问题与解决办法
-
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案