我有以下 JSON 字符串{"name":""C\u008cUR Carmen"}
但未\u008c
解析。它显示空字符。
json = '{"name":"C\u008cUR Carmen"}';
json = JSON && JSON.parse(json) || $.parseJSON(json);
Run Code Online (Sandbox Code Playgroud)
展示 : CUR Carmen
预计 : CŒUR Carmen
请帮忙。
* 注意 * : JSON 数据由 PHP 服务器返回,因此不应该有任何语法错误,因为我使用json_encode
并从 AJAX 获取响应。它适用于其他字符,例如à, é
但只有这个奇怪的字符不能正确显示
编辑:解决了!这不是 JS 问题,而是 MySQL 返回的字符集问题。您可以mysql_set_charset('utf8')
在返回 SQL 数据之前使用。\u0152
按预期显示
无需转义RFC 4627 中规定的 unicode 字符
2.5. 字符串
字符串的表示类似于 C 系列编程语言中使用的约定。字符串以引号开始和结束。除了必须转义的字符外,所有 Unicode 字符都可以放在引号内:引号、反斜杠和控制字符(U+0000 到 U+001F)。
您可以直接使用您的 unicode 字符串:
json = '{"name":"CŒUR Carmen"}';
json = JSON && JSON.parse(json) || $.parseJSON(json);
Run Code Online (Sandbox Code Playgroud)
我认为您的服务器端实现中存在一个转码错误,您在使用json_encode
. JSON 要求所有数据都以 Unicode 编码。
编辑
在这个小提琴中,有一个示例如何在 javascript 中恢复转义的 unicode。
你需要转义 your"
并转义\
:
json = '{"name":""C\u008cUR Carmen"}';
Run Code Online (Sandbox Code Playgroud)
应该
json = '{"name":"\\"C\\u008cUR Carmen"}';
Run Code Online (Sandbox Code Playgroud)
如果第四个"
只是输入错误,只需转义即可\
:
json = '{"name":"C\\u008cUR Carmen"}';
Run Code Online (Sandbox Code Playgroud)