2010-07-06 14 views
2

我有以下字符串"\u3048\u3075\u3057\u3093"。我從網頁獲得字符串 ,作爲JSONP中返回數據的一部分。獲取字符串的含義

那是什麼?它看起來像UTF8,但它應該看起來像"U+3048U+3075U+3057U+3093"

反斜槓的含義是什麼(\)?

如何將其轉換爲人類可讀形式?

我正在尋找一個解決方案與Ruby,但任何解釋發生了什麼這裏讚賞。

回答

2

這是Unicode,但不是UTF-8,它是UTF-16。您可以忽略代理對,並將其視爲Unicode代碼字符的4位十六進制代碼點。

使用Ruby 1.9:

require 'json' 

puts JSON.parse("[\"\\u4e00\",\"\\u4e8c\"]") 

打印:

一 
二 
0

JSON中的Unicode字符被轉義爲反斜槓u後跟四個十六進制數字。請參閱json.org上的字符串製作。

任何JSON解析器將其轉換爲正確的表示您的平臺(如果沒有,那麼顧名思義它是不是一個JSON解析器)

4

U+3048語法通常用來表示一個字符的Unicode代碼點。這樣的代碼點是固定的,不依賴於編碼(UTF-8,UTF-32 ...)。

JSON字符串由除雙引號,反斜槓以及U + 0000至U + 001F範圍(控制字符)以外的Unicode字符組成。字符可以用從\u開始的轉義序列表示,後面跟隨4個表示該字符的Unicode代碼點的十六進制數字。這是JavaScript語法(JSON是它的一個子集)。在JavaScript中,反斜線用作轉義字符。