我有以下字符串"\u3048\u3075\u3057\u3093"
。我收到了字符串
来自网页,作为JSONP中返回数据的一部分。
"U+3048U+3075U+3057U+3093"
?
反斜杠的含义是什么(\
)?
如何将其转换为人类可读的形式?
我正在寻找使用Ruby的解决方案,但是对此处发生的任何解释都表示赞赏。
答案 0 :(得分:4)
U+3048
语法通常用于表示字符的Unicode代码点。这样的代码点是固定的,不依赖于编码(UTF-8,UTF-32 ......)。
JSON字符串由Unicode字符组成,但双引号,反斜杠和U + 0000到U + 001F范围内的字符(控制字符)除外。字符可以用以\u
开头的转义序列表示,后跟4个十六进制数字,表示字符的Unicode代码点。这是JavaScript语法(JSON是它的一个子集)。在JavaScript中,反斜杠用作转义字符。
答案 1 :(得分:2)
它是Unicode,但不是UTF-8,它是UTF-16。您可以忽略代理对,并将其视为Unicode代码字符的4位十六进制代码点。
使用Ruby 1.9:
require 'json'
puts JSON.parse("[\"\\u4e00\",\"\\u4e8c\"]")
打印:
一
二
答案 2 :(得分:0)
JSON中的Unicode字符被转义为反斜杠u后跟四个十六进制数字。请参阅json.org上的字符串生成。
任何JSON解析器都会将它转换为您平台的正确表示形式(如果没有,那么根据定义它不是JSON解析器)