2010-05-03 49 views
7

也許這只是我對unicode的不熟悉,所以如果我錯了,請糾正我。JSON指定「任何UNICODE字符」?

看着http://json.org/,該規範說,一個字符串可以包含「任何UNICODE字符」,但這使我感到困惑。

  • JSON是一種通訊格式 是否正確?在它的核心, 一切都必須轉換爲 字節。
  • 相比之下,UNICODE是一個 邏輯格式,必須編碼爲 才能夠傳輸它,對嗎?

那麼他們在那裏是什麼意思?

回答

16

RFC

 
3. Encoding 

    JSON text SHALL be encoded in Unicode. The default encoding is 
    UTF-8. 

    Since the first two characters of a JSON text will always be ASCII 
    characters [RFC0020], it is possible to determine whether an octet 
    stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking 
    at the pattern of nulls in the first four octets. 

      00 00 00 xx UTF-32BE 
      00 xx 00 xx UTF-16BE 
      xx 00 00 00 UTF-32LE 
      xx 00 xx 00 UTF-16LE 
      xx xx xx xx UTF-8 
+2

當人們說「用Unicode編碼」時,我總是感到困惑,因爲(據我所知)Unicode是一個字符集,而不是編碼。不應該「應該使用Unicode字符集,默認編碼爲UTF-8」?我很驚訝在RFC中看到這樣的事情。 – ALEXintlsos 2016-06-23 18:57:53

3

JSON是一種可以包含UNICODE字符的序列化格式。這個unicode字符串的字節表示通常通過線路發送,通常通過使用HTTP標頭的HTTP協議來指定客戶端的編碼爲UTF-8。

+0

最新的RFC狀態: 注意:沒有爲此註冊定義「字符集」參數。 添加一個真正對兼容收件人沒有影響。 – 2015-04-14 09:06:09

1

你是正確的,一切都必須轉化爲字節,通常是一般是通過UTF(Unicode轉換格式)發生。 JSON RFC在section 3中解釋如何分辨正在使用的UTF。