JS无法解析带有unicode字符的JSON
JS cannot parse JSON with unicode character
我有以下JSON字符串{"name":""C'u008cUR Carmen"}
,但'u008c
未解析。它显示的是空字符。
json = '{"name":"C'u008cUR Carmen"}';
json = JSON && JSON.parse(json) || $.parseJSON(json);
显示:CUR Carmen
预期:CŒUR Carmen
请帮忙。
*注意*:JSON数据由PHP服务器返回,因此不应该有任何语法错误,因为我使用了json_encode
并从AJAX获得了响应。它可以与à, é
等其他字符一起使用,但只有这个wierd字符不能正确显示
编辑:已解决!这不是JS问题,而是MySQL返回的字符集问题。您可以在返回SQL数据之前使用mysql_set_charset('utf8')
。按预期显示'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);
我认为在您的服务器端实现中存在一个代码转换错误,即在使用json_encode
之前将输出更改为ASCII。JSON要求所有数据都以Unicode编码。
编辑
在这个fiddle中,有一个如何在javascript中恢复转义的unicode的示例。
您需要逃离"
并逃离'
:
json = '{"name":""C'u008cUR Carmen"}';
应该是
json = '{"name":"''"C''u008cUR Carmen"}';
如果第4个"
只是一个键入错误,只需退出'
即可:
json = '{"name":"C''u008cUR Carmen"}';
相关文章:
- 无法呈现js unicode字符“u1F310”
- Unicode字符未在HTML5画布中正确呈现
- jquery textcomplete无法使用Unicode字符,并且缺少空格
- 在 Javascript 中显示 unicode 字符(表情符号)
- 将文本和html unicode字符添加到textarea元素中
- 用unicode字符提取字符串中的单词
- 如何替换不可打印的unicode字符(Javascript)
- PHP:如何用unicode字符将文件写入磁盘
- JavaScript 转到带有 Unicode 字符的 URL
- 为什么这个 unicode 字符的警报不成功
- 如何在包含 Unicode 字符 'u00A0' 的表中包装单词
- Mozilla Builder 编辑器取消转义 Unicode 字符,并发 w. AMO 上传失败
- 正则表达式匹配所有单词,包括标点符号和 unicode 字符.没有空格
- 正则表达式与专业 unicode 字符不匹配
- 使用带有 unicode 字符的 ng-pattern (Angular.JS) 的不良结果
- 删除不受支持的 unicode 字符,否则显示为正方形
- Javascript:非 unicode 字符代码到 unicode 字符
- 交换 Unicode 字符
- 从字符串中剥离 javascript unicode 字符 8206
- Jquery DataTables 无法显示 unicode 字符