Как мне узнать кодировку сообщения JSON? - PullRequest
0 голосов
/ 24 апреля 2019

Официальная спецификация JSON гласит:

Текст JSON ДОЛЖЕН быть закодирован в UTF-8, UTF-16 или UTF-32.Кодировка по умолчанию - UTF-8, и ...

Таким образом, по сути, сообщение JSON может входить в любую из этих трех кодировок.Но ... как я могу угадать , какой это, когда я получаю это?

Сообщение может поступать из нескольких источников, таких как очередь, из браузера, из базы данных, файловой системы и т. Д.

В нем также говорится игнорировать маски порядка байтов (BOM).:

... реализации, которые анализируют тексты JSON, МОГУТ игнорировать наличие метки порядка байтов, а не рассматривать ее как ошибку.

Я помню, что документы XML имели"пролог", в котором указана кодировка, но я не могу найти ничего похожего для сообщений JSON.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

rsp и CouchDeveloper довольно хорошо рассказали об этом своими ответами (я не могу поверить в это).

В обоих ответах рассматриваются шаблоны байтов, чтобы определить, какая кодировка была использована. Извините, это не дает прямого ответа на ваш вопрос, но может помочь вам написать собственную реализацию.

1 голос
/ 25 апреля 2019

Насколько я понимаю, кто бы ни был производителем / отправителем этих данных JSON, он должен указать тип используемой кодировки, а не получатель, пытающийся его угадать. Обычно эта информация является частью документации API, которую производитель / отправитель предоставляет получателю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...