Các JSON RFC, phần 2.5, nói trong phần:Encoding JSON trong UTF-16 hay UTF-32
Để thoát khỏi một ký tự mở rộng mà không có trong Basic Multilingual Plane, nhân vật được thể hiện như một mười hai ký tự, mã hóa cặp thay thế UTF-16. Vì vậy, ví dụ, một chuỗi chỉ chứa ký tự khóa của âm nhạc G (U + 1D11E) có thể được biểu diễn là "\ uD834 \ uDD1E".
Giả sử tôi có lý do hợp lệ để mã hóa JSON dưới dạng UTF-16BE (được cho phép). Khi làm như vậy, vẫn cần thiết để thoát khỏi các ký tự không có trong Mặt phẳng đa ngôn ngữ cơ bản? Ví dụ, thay vì điều này:
00 5C 00 75 00 44 00 38 00 33 00 34 00 5C 00 75 00 44 00 44 00 31 00 45
\ u D 8 3 4 \ u D D 1 E
là 24 byte UTF-16BE byte chuỗi cho \uD834\uDD1E
, là nó hợp pháp để làm điều này:
D8 34 DD 1E
ví dụ, sử dụng UTF- 4-byte 16BE giá trị trực tiếp?
Tương tự như vậy, nếu tôi là để mã hóa chuỗi JSON giống như UTF-32BE, có thể tôi chỉ cần sử dụng giá trị mã điểm trực tiếp:
00 01 D1 1E
?
Câu hỏi hay. Tôi nghi ngờ rằng bất cứ điều gì spec nói, cuối cùng nó đi xuống đến sự hỗ trợ của bất cứ ai đang phân tích cú pháp JSON. – deceze