我有问题 我json_encode
在数据库上上传后使用。我的文件也在utf8中,我的数据库中也有。但是在我的数据库中有一些\u00e9
,我不知道为什么...
编辑 :
有一个简单的代码:
$toast = array();
for($i=0;$i<11;$i++)
$toast[]='é';
$toast = json_encode($toast);
print utf8_decode($toast);
这是行不通的,我如何打印一个充满'é'字符的简单数组...
编辑2:
此代码:
$toast = array();
for($i=0;$i<11;$i++)
$toast[]='é';
$toast = json_encode($toast);
print $toast;
输出:
["\u00e9","\u00e9","\u00e9","\u00e9","\u00e9","\u00e9","\u00e9","\u00e9","\u00e9","\u00e9","\u00e9"]
而且我要 :
["é","é","é","é","é","é","é","é","é","é","é"]
您可以使用JSON_UNESCAPED_UNICODE
标志json_encode
(自PHP 5.4起可用):
$toast = json_encode($toast, JSON_UNESCAPED_UNICODE);
在PHP 5.4之前,您可以使用以下代码段:
$toast = json_encode($toast);
$toast = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', function($matches) {return mb_convert_encoding(pack('H*', $matches[1]), 'UTF-8', 'UTF-16');}, $toast);
由于mb_convert_encoding()
并非在所有安装中都可用,因此您还可以使用以下肮脏的解决方法:
$toast = array_map('htmlentities', $toast);
$toast = json_encode($toast);
$toast = html_entity_decode($toast);
但是价值观没有问题\uXXXX
-看起来很丑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句