使用PHP转换JSON字符串中的“Java源代码字符”

时间:2013-06-24 04:54:24

标签: php json encoding

我有一个包含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'};
}
?>

2 个答案:

答案 0 :(得分:3)

您需要告诉Web浏览器您提供的编码。

<?php
header('content-type: text/plain; charset=utf-8');
var_dump(json_decode($jsonStr));

答案 1 :(得分:1)

如果您使用的是PHP 5.4,您可以使用json_encode()的函数选项,如下所示: -

echo $b=json_encode('Dalé',JSON_UNESCAPED_UNICODE);
echo json_decode($b);