【发布时间】:2013-06-24 04:54:24
【问题描述】:
我有一个包含 Dal\u00e9 的 JSON 字符串。当我在 JSON 上使用 json_decode 时,它会转换为 Dalé,但是 JSON 来自的原始字符串是 Dalé。为什么没有正确转换?
我有found,"\u00E9" 是é 的 C/C++/Java 源代码编码。但是,对我来说,这并不能解释为什么会出错。
不正确的 PHP 输出示例:
<?php
$opts = array('http'=>array('ignore_errors' => true));
$context = stream_context_create($opts);
$jsonurl = "http://api.kivaws.org/v1/loans/552804.json";
$json = file_get_contents($jsonurl, false, $context);
$json_output = array(json_decode($json));
$json_error = $json_output[0]->error;
$json_message = $json_error->message;
foreach ($json_output[0]->{'loans'} as $loan) {
echo 'Name: '.$loan->{'name'};
}
?>
【问题讨论】:
-
php 可以很好地处理 json 中的 unicode 转义序列。很可能,您在其他地方使用了该字符串,或者您没有告诉网络浏览器您正在给它 utf8。
-
ideone.com/0BRsYA - 工作正常
-
@Ignacio Vazquez-Abrams:你在夸大其词
-
也许吧。但这并不一定意味着我错了。