我有以下JSON字符串{"name":""C\u008cUR Carmen"}
,但未解析\u008c
。它显示空字符。
json = '{"name":"C\u008cUR Carmen"}';
json = JSON && JSON.parse(json) || $.parseJSON(json);
显示:CUR Carmen
期待:CŒUR Carmen
请帮忙。
* Note * :PHP服务器返回JSON数据,因此不应该出现任何语法错误,因为我使用了json_encode
并从AJAX获取响应。它适用于à, é
等其他角色,但只有这个奇怪的角色无法正常显示
编辑:解决!它不是JS问题,它是MySQL返回的字符集问题。您可以在返回SQL数据之前使用mysql_set_charset('utf8')
。按预期显示\u0152
答案 0 :(得分:2)
无需转义RFC 4627
中声明的unicode字符<强> 2.5。字符串强>
字符串的表示类似于C中使用的约定 编程语言家族。字符串的开头和结尾 引号。所有Unicode字符都可以放在 除了必须转义的字符之外的引号: 引号,反向实线和控制字符(U + 0000 通过U + 001F)。
您可以直接使用您的unicode字符串:
json = '{"name":"CŒUR Carmen"}';
json = JSON && JSON.parse(json) || $.parseJSON(json);
我认为您的服务器端实现中存在转码错误,您在使用json_encode
之前将输出更改为ASCII。所有数据都以Unicode编码,这是JSON的要求。
修改强>
在this fiddle中,有一个示例如何在javascript中恢复转义的unicode。
答案 1 :(得分:0)
您需要逃离"
并逃离\
:
json = '{"name":""C\u008cUR Carmen"}';
应该是
json = '{"name":"\\"C\\u008cUR Carmen"}';
如果第4个"
只是输入错误,请转义\
:
json = '{"name":"C\\u008cUR Carmen"}';