0

我有一个 JSON 字符串,其中包含Dal\u00e9. 当我json_decode在 JSON 上使用时,它被转换为Dalé,但是 JSON 来自的原始字符串是Dalé. 为什么这没有正确转换?

发现"\u00E9"é. 但是,对我来说,这并不能回答为什么会出错。


错误的 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'};
}
?>
4

2 回答 2

3

你需要告诉网络浏览器你给它什么编码。

<?php
header('content-type: text/plain; charset=utf-8');
var_dump(json_decode($jsonStr));
于 2013-06-24T05:16:21.950 回答
1

如果您使用的是 php 5.4,您可以像这样使用 json_encode() 的函数选项:-

echo $b=json_encode('Dalé',JSON_UNESCAPED_UNICODE);
echo json_decode($b);
于 2013-06-24T05:16:28.653 回答