Получить кодировку страницы / iframe через JavaScript - PullRequest
17 голосов
/ 25 ноября 2008

Я бы хотел программно определить кодировку страницы через JavaScript или какой-либо другой API из браузера. Причина, по которой я хочу получить эту информацию, заключается в том, что я пытаюсь запутаться в основных браузерах по поводу того, какие кодировки символов они поддерживают, и, очевидно, только потому, что я отправил соответствующий «Content-Type», не означает, что браузер будет правильно делать с кодировкой , Любые другие возможные методы приветствуются, но я бы не стал нажимать «Информация о странице» для более чем 50 кодировок символов.

Ответы [ 2 ]

23 голосов
/ 26 ноября 2008

Javascript может сообщать только о некоторых вещах, которые происходят. Большинство браузеров не предоставляют вам достаточно полезных настроек, чтобы вы могли основывать на них любые хардкорные тесты.

Существуют такие вещи, как document.inputEncoding, document.characterSet (не IE), document.charset и document.defaultCharset (IE), которые могут помочь вам в этом. Но они могут быть такими же облезлыми, как и фактическая поддержка. То есть, если браузер «думает», что он поддерживает кодировку, но на самом деле это не так, разве это не то, что вы хотите знать?

Я думаю, что вам лучше всего настроить динамическую тестовую страницу с некоторыми довольно сложными символами (или очень большим набором тестов), загрузить тест в браузере, заставить браузер сообщать строку идентификатора браузера, настройки кодировки, исходный запрос на кодировку и содержимое testElement.innerHTML, которое затем можно сравнить с ожидаемыми результатами.

6 голосов
/ 06 февраля 2017

Оригинальный ответ уже устарел, и поддержка document.characterSet значительно улучшилась.

>>> document.characterSet

IE 11:

"utf-8"

Firefox 52, Chrome 55 и Chrome на Android, Safari 10:

"UTF-8"

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

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