由于特殊字符,PHP将json解码为xml

时间:2018-01-19 07:52:49

标签: php json xml

我试图将json转换为xml字符串,我必须将其存储在mysql数据库中。由于json中的特殊字符,这不起作用。

正如您在示例代码中看到的,我找到了一种在浏览器中查看精细字符串的方法。

<?php
// example response
$json = '{"examples":"„Plötzlich“ los – und (†30) Wird’s H&M"}';

// decode ...
$jsonArray = json_decode($json, true);

// ... to convert it
$xmlData = '<?xml version="1.0" encoding="utf-8"?><item>';
$xmlData .= iconv('UTF-8', 'Windows-1252', $jsonArray['examples']);
$xmlData .= '</item>';

//echo ('without encoding: ' . $jsonArray['examples'] . ' ... without encoding: ' . iconv('UTF-8', 'Windows-1252', $jsonArray['examples']));
echo($xmlData);

/*
 * with the first echo the xml string looks like 
 * <?xml version="1.0" encoding="utf-8"?><item>„Plötzlich“ los – und (†30) Wird’s H&M</item>
 * 
 * without the first echo it looks like 
 * <?xml version="1.0" encoding="utf-8"?><item>�Pl�tzlich� los � und (�30) Wird�s H&M</item><item>„Plötzlich“ los – und (†30) Wird’s H&M</item>
 */
?>

但是尝试将该字符串写入数据库将在第一个停止。

我的错在哪里?如何保留特殊字符?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案......它只是json_decode中的一个附加选项:

$jsonArray = json_decode($json, true, JSON_UNESCAPED_UNICODE);