我有一个字符串,它在Javascript中被序列化为JSON,然后反序列化为Java.
看起来如果字符串包含度数符号,那么我就会遇到问题.
我可以帮助找出应该责怪的人:
这是JSDB中发生的事情:
js>s='15\u00f8C'
15°C
js>JSON.stringify(s)
"15°C"
Run Code Online (Sandbox Code Playgroud)
我希望"15\u00f8C'这让我相信Spidermonkey的JSON实现没有做正确的事情...除了JSON主页的语法描述(是规范吗?)说char可以是
any-Unicode-character- except - " - 或 - \ - or- control-character"
所以也许它按原样传递字符串而不将其编码为\ u00f8 ...在这种情况下我会认为问题出在gson库中.
有人可以帮忙吗?
我想我的解决方法是使用不同的JSON库,或者在调用后自己手动转义字符串JSON.stringify()- 但如果这是一个错误,那么我想提交错误报告.
如何将带有国际字符的json编码字符串保存到数据库,然后在浏览器中解析解码后的字符串?
<?php
$string = "très agréable";
// to the database
$j_encoded = json_encode(utf8_encode($string));
// get from Database
$j_decoded = json_decode($j_encoded);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<?= $j_decoded ?>
</html>
Run Code Online (Sandbox Code Playgroud) 我一直在阅读一些解决方案,但尚未设法获得任何工作.
我有一个JSON字符串,我从API调用中读取它,它包含Unicode字符 - \u00c2\u00a3例如是£符号.
我想用PHP将它们转换为£或者£.
我正在调查问题并找到以下代码(使用我的英镑符号进行测试)但它似乎不起作用:
$title = preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", '\u00c2\u00a3');
Run Code Online (Sandbox Code Playgroud)
输出是£.
我是否认为这是UTF-16编码的?我如何将这些转换为HTML输出?
UPDATE
似乎来自API的JSON字符串有2或3个未转义的Unicode字符串,例如:
That\u00e2\u0080\u0099s (right single quotation)
\u00c2\u00a (pound symbol)
Run Code Online (Sandbox Code Playgroud)