JSON编码中如何处理欧元符号(€)?

3

我有一个PHP页面,生成JSON并从MySQL表中提取值。除了包含欧元符号的值(例如“€ 20,00”)之外,一切都很好。在我的JSON中,欧元符号显示为\u20ac...

像这样:

[
  {
    "id": "535",
    "Name": "Pluto",
    "fare": "\u20ac 20,00"
  }
]

在评估此json的页面上,它显示为“€ 20,00”,这很好,但我真的希望它在json字符串本身中也出现相同。
有什么提示吗?
2个回答

2
多字节字符(除控制字符外)可以直接显示或转义为\uXXXX,两种表示方法都是正确的。如果您喜欢直接呈现字符,并且使用php创建json,则需要向json_encode:参数传递正确的选项。
您要查找的选项是JSON_UNESCAPED_UNICODE

编码多字节Unicode字符(默认为转义为\uXXXX)。自PHP 5.4.0版开始提供。


太好了!简洁明了 :-) 我之前一直在使用JSON_PRETTY_PRINT选项,不知道如何将它们结合起来.. 发现正确的方法是这样的:json_encode($myArr, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);只是提醒其他人注意。 - Giorgio Zanetti

2

这是一个非常简单的例子。当我知道你想要什么时,我就可以完成它。

var json = [
  {
    "id": "535",
    "Name": "Pluto",
    "fare": "\u20ac 20,00"
  }
];

$(function(){$('#screen').html(json[0].fare);});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id='screen'></div>

这个示例更加完美: https://jsfiddle.net/a3dmorteza/x7fwto5L/


我的问题不在于解析和显示值。由于JSON的一个强项是可读性,我只是更喜欢将欧元符号作为文字插入我的JSON数据中,而不是进行转义。无论如何,感谢您的回复,您解析JSON的方式给了我启示,让我想到了其他事情 :-) - Giorgio Zanetti
我现在理解了你的问题,我认为@t.niese的答案是最好的答案。 - Seyed Morteza Hosseini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接