(Раскрытие: я разработчик, отвечающий за соответствующий код в Firefox.)
Я создаю веб-сайт с кодировкой UTF-16.
Пожалуйста, не надо.Краткие правила:
- Никогда не используйте UTF-16 для обмена.
- Всегда используйте UTF-8 для обмена.
- Если вы нарушаете правила 1 & 2 ивсе еще используйте UTF-16, по крайней мере, используйте спецификацию (правильную).
- А если серьезно, не нарушайте правила 1 и 2.
Если вы включаете предоставленную пользователемиспользование контента на ваших страницах с использованием UTF-16 означает, что ваш сайт уязвим для социальной инженерии XSS, по крайней мере, в старых браузерах.Попробуйте эту демонстрацию в старой версии Firefox (версия 20 или более ранней) или в версии Opera на основе Presto.
Чтобы избежать этой уязвимости, используйте UTF-8.
Это означает, что все файлы (html, jsp) кодируются в формате UTF-18
О-о-о.: -)
и я устанавливаю в заголовке каждой HTML-страницы: <meta http-equiv="content-type" content="text/html; charset=UTF-16">
Мета-тег работает как объявление внутренней кодировки, только когда используется кодировкасопоставляет байты метатега с теми же байтами, что и ASCII.Это не относится к UTF-16.
Вы знаете причину?
Не без полных заголовков ответа и исходного тела ответа в шестнадцатеричном редакторе.Общее решение, как отмечено выше, состоит в том, чтобы всегда использовать UTF-8 и никогда не использовать UTF-16 по HTTP.
Если ваш контент написан на языке, для которого UTF-16 более компактен, чем UTF-8, две вещи:
- Все HTML, JS и CSS на странице болееКомпактный в UTF-8.
- gzip - разница исчезнет.