windows-1251 в JSON

Василий М.

Новичок
JSON должен отдаваться в UTF-8 как application/json

Скажите, почему тогда все корректно работает и с типом text/html и с кодировкой windows-1251? Браузеры просто игнорируют этот стандарт?
 

Adelf

Administrator
Команда форума
Браузеры многое делают, чтобы не падало. Стандарты-стандартами, а пользователи важнее. И так у браузеров было всегда.
 

Redjik

Джедай-мастер
Ты имеешь в виду виртуальную машину в браузере?
Конечно понимает, разметка json не ломается кодировкой.

Тот факт, что данные парсятся - заслуга библиотек, jQuery например.
 

Adelf

Administrator
Команда форума
Там по стандарту JSON должен быть всегда в Unicode. Он просто не понимает почему браузеры поддерживают JSON закодированный в windows-1251. И помоему я уже ответил.
 

Redjik

Джедай-мастер
Ну вот хоть убейте, я не понимаю фразу - браузеры не поддерживают JSON.

Json это всего лишь формат ответа, главное чтобы по протоколу http пришел, чего там не поддерживать то?
То, что js библиотеки или raw js могут с трудом кушать кривой JSON это одно, браузеры другое
 

WMix

герр M:)ller
Партнер клуба
AnrDaemon, нет там все правильно написано, он откопал из под одеяла то что было еще в IE5, и удивляется, что браузеры обратносовместимые
 

AnrDaemon

Продвинутый новичок
WMix, я имел в виду, что люди, даже англоязычные, часть путают значения SHALL и SHOULD.
SHALL means an absolute requirement of the specification.
SHOULD describe desired behavior, that MAY be violated, but such violations are strongly discouraged.
 

Hello

Новичок
JSON должен отдаваться в UTF-8 как application/json

Скажите, почему тогда все корректно работает и с типом text/html и с кодировкой windows-1251? Браузеры просто игнорируют этот стандарт?
Конечно. Браузеры много всего игнорируют
HTML:
<ul>
<li>a
<li>b
<li>c
</ul>
HTML:
<p>a
<p>b
<p>c
HTML:
q = 1
alert(q)
 

peon

Lok'tar ogar
Может браузер конвертирует в юникод, и так с ним работает, я как вижу, например, кавычки в свойствах переводятся в escape последовательность?
 

CodeKeeper

Новичок
JSON должен отдаваться в UTF-8 как application/json
Потому что это стандарт. Потому как кроме браузеров, к серверу могут еще обращаться и мобильные клиенты с помощью REST запросов.

Скажите, почему тогда все корректно работает и с типом text/html и с кодировкой windows-1251? Браузеры просто игнорируют этот стандарт?
А кто сказал что корректно? Я вот сейчас отключу автоопределение кодировки в браузере и поставлю принудительно юникод, вот тогда все и будет в кракозябрах.

https://toster.ru/q/6050
 

hell0w0rd

Продвинутый новичок
А мне только кажется, или браузер получая ответ в любой кодировке не обязан в той же кодировке его отображать, а использовать везде UTF-8, на пример?
Если это так, то формально совершенно наплевать как пришел ответ, это просто строка в JS, которая сконвертирована в UTF-8. Дальше JSON.parse, или ее полифил парсит эту строку в js-объект и все.
И для ajax-запросов совершенно наплевать с какими заголовками ты там что-то отправил, xhr.response - всегда строка.
 

WMix

герр M:)ller
Партнер клуба
В js это глобальная переменная, чего тут игонрируют браузеры - не понятно.
не декларирована (var) и без ; но не суть, это и html4 тоже возможно даже и 3 и 2 но без js, вернее так было изначально это после xhtml появился и все опошлил
 
Сверху