获得字符串的含义

时间:2010-07-06 07:48:23

标签: ruby string encoding

我有以下字符串"\u3048\u3075\u3057\u3093"。我收到了字符串 来自网页,作为JSONP中返回数据的一部分。

那是什么?它看起来像UTF8,但它应该看起来像"U+3048U+3075U+3057U+3093"

反斜杠的含义是什么(\)?

如何将其转换为人类可读的形式?

我正在寻找使用Ruby的解决方案,但是对此处发生的任何解释都表示赞赏。

3 个答案:

答案 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解析器)