Механизм обнаружения набора символов Facebook?

Сегодня, я изучил HTML-код facebook.com и нашел что-то вроде этого:

<input type="hidden" value="€,´,€,´,水,Д,Є" name="charset_test"/>

Это повторилось два раза в <form>...</form>.

Какая-либо идея, что этот код мог бы быть полезен для - некоторое клиентское обнаружение набора символов серверной стороны? Насколько я знаю, набор символов браузера передается в Запросе HTTP так или иначе (заголовок "Принимать-набора-символов").

6
задан Void 6 January 2010 в 12:11
поделиться

4 ответа

Есть идеи, для чего этот код может быть полезен - для определения кодировки клиента на стороне сервера?

По-видимому, да.

Знак евро полезен для определения кодировки, потому что существует множество способов его кодирования:

  • E2 82 AC в UTF-8
  • 88 в Windows-1251
  • 80 в других кодировках Windows-125x
  • A4 в ISO-8859-7, -15 и -16
  • A2 E3 в GB18030
  • 85 40 в Shift-JIS
  • и т. Д.

Насколько мне известно, кодировка браузера все равно передается в HTTP-запросе (заголовок «Accept-Charset»).

Предполагается, что передается в заголовке HTTP Content-Type , но это не означает, что пользовательские агенты действительно все понимают правильно.

4
ответ дан 17 December 2019 в 00:10
поделиться

Я думаю, они соответствуют этому в принимающем скрипте, чтобы убедиться, что клиент послал запрос в правильной кодировке UTF-8 и, возможно, даже, потому что они знают, какие символы ожидать, чтобы обнаружить реальную кодировку "на лету".

Если я правильно помню - однажды мне пришлось с этим разобраться - в IE6 в некоторых ситуациях возникали проблемы с кодировкой формы.

3
ответ дан 17 December 2019 в 00:10
поделиться
&euro;,&acute;,€,´,水,Д,Є

Я думаю, что некоторые браузеры отправить то же самое, что и ´ так же как ´,

Так что они могут проверить как charset_test[0] == charset_test[2] и charset_test[1] == charset_test[3]

Для других символов я понятия не имею. 水, наверное, тест на CJK.

0
ответ дан 17 December 2019 в 00:10
поделиться

Как говорит Пекка, это для того, чтобы иметь возможность обнаружить кодовую таблицу запроса. Протокол HTTP не предоставляет способа определения кодовой страницы запроса. Из-за этого приходится полагаться на конвенции, не входящие в протокол. Обычно браузеры предсказуемы, но этот трюк - единственный способ быть уверенным на 100%.

Смотрите также: http://www.phpwact.org/php/i18n/charsets

0
ответ дан 17 December 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: