Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将unicode字符转换为反斜杠值-以解决json_编码问题_Php_Json_Unicode - Fatal编程技术网

Php 如何将unicode字符转换为反斜杠值-以解决json_编码问题

Php 如何将unicode字符转换为反斜杠值-以解决json_编码问题,php,json,unicode,Php,Json,Unicode,我正在尝试从我的数据库中提取已存储为unicode值的体育运动员。当调用json_encode时,当它遇到我得到的格式中的unicode字符时,它会放弃: $values = array('a'=>'BERDYCH, Tomáš','b'=>'FEDERER, Roger'); echo json_encode($values); 结果是 {“a”:“伯蒂奇,汤姆”,“b”:“费德勒,罗杰”} 您可以看到“Tom”被截断,因为它达到了unicode字符 我知道json_encode

我正在尝试从我的数据库中提取已存储为unicode值的体育运动员。当调用json_encode时,当它遇到我得到的格式中的unicode字符时,它会放弃:

$values = array('a'=>'BERDYCH, Tomáš','b'=>'FEDERER, Roger');
echo json_encode($values);
结果是

{“a”:“伯蒂奇,汤姆”,“b”:“费德勒,罗杰”}

您可以看到“Tom”被截断,因为它达到了unicode字符

我知道json_encode只处理\uxxx样式的字符,但问题是我的数千名体育比赛选手的数据库已经包含unicode存储值,因此我需要在不更新数据源的情况下将átype字符转换为\uxxx


有什么想法吗?

要确保它们是UTF8,请对数组中的所有值进行编码

$values = array_map('utf8_encode', $values);
如果这没有帮助,请使用mb_detect_encoding()和mb_convert_encoding()将特定于语言的编码更改为UTF8。

json_encode()
在获取无效UTF-8字符时执行此操作

如果您正在从数据库获取数据,最可能的原因是您的连接未进行UTF-8编码,并且您正在从查询中获取ISO-8859-1数据

显示您的数据库代码以获得如何更改的建议

我了解json_encode仅处理\uxxx样式的字符


事实并非如此
json#u encode()
输出以这种方式编码的Unicode字符,但它不希望它们出现在传入的数据中。

这是一个c#问题,但请看一看实现方法。

您的源代码和/或来自数据库的数据没有以UTF-8编码。我猜这是一种专门的ISO-8859编码,但我不确定。保存源代码时,请确保它保存在UTF-8中。从数据库获取数据时,请确保将连接设置为utf8


请参阅和。

json\u encode
可以很好地处理Unicode,至少应该是这样。你确定你的文本是UTF-8编码的吗?向我们展示文本的
bin2hex
;给我424552445943482C20546F6DE19A我需要设置一个环境变量还是什么?上述代码是否适用于您,并为您返回Tomas Berdych全名的json编码版本?请不要建议
utf8\u encode
,除非说明源代码需要使用拉丁文1。否则
utf8\u编码就没用了!在编码方面,“尝试”或“猜测”并不是解决方案。知道你在处理什么编码!更有可能有更好的解决方案:从根本上解决问题。(编辑:deceze击败了我!)谢谢Pekka,但是上面的两行代码导致了同样的问题,即使没有使用数据库?@Luc您的源文件是UTF-8编码的吗?(通常在IDE的“另存为”对话框中)啊,我看到了Pekka-谢谢!1) 我已将我的PHP保存为UFT-8编码2)我正在投资更改我的列、数据库表和sql默认设置,以将默认值编码为utf-8。感谢deceze,这里有一些非常有用的链接。从现在开始,我要做的第一件事就是从一开始就建立utf-8。