2010-05-03 40 views
7

Có lẽ đây chỉ là sự không quen thuộc của tôi với unicode, vì vậy hãy sửa tôi nếu tôi nhầm.JSON chỉ định "bất kỳ ký tự UNICODE nào"?

Nhìn vào http://json.org/, thông số kỹ thuật cho biết một chuỗi có thể bao gồm "bất kỳ ký tự UNICODE nào", nhưng điều này làm tôi bối rối.

  • JSON là định dạng liên lạc đúng? Tại cốt lõi của nó, mọi thứ phải dịch xuống byte.
  • Ngược lại, UNICODE là định dạng logic và phải được mã hóa thành để có thể truyền tải, đúng không?

Vậy chúng có ý nghĩa gì?

Trả lời

16

Từ 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

Tôi luôn luôn bối rối khi mọi người nói "được mã hóa trong Unicode", vì (như tôi hiểu nó) Unicode là một bộ ký tự, không phải là một bảng mã. Không nên là "S SH sử dụng bộ ký tự Unicode, với mã hóa mặc định là UTF-8"? Tôi ngạc nhiên khi thấy một thứ như vậy trong RFC. – ALEXintlsos

3

JSON là định dạng tuần tự hóa có thể bao gồm các ký tự UNICODE. Biểu diễn byte của chuỗi unicode này thường được gửi qua dây, thông thường thông qua giao thức HTTP sử dụng tiêu đề HTTP để chỉ định mã hóa cho máy khách là UTF-8.

+0

Trạng thái RFC mới nhất: Lưu ý: Không có tham số "ký tự" được xác định cho đăng ký này. Thêm một thực sự không ảnh hưởng đến người nhận tuân thủ. –

1

Bạn đúng khi cho rằng tất cả mọi thứ phải dịch sang tiếng byte, và thường thường xảy ra thông qua một UTF (Định dạng chuyển đổi Unicode). JSON RFC giải thích trong section 3 cách biết UTF đang được sử dụng như thế nào.

Các vấn đề liên quan