我想以编程方式通过JavaScript或浏览器中的其他API来确定页面的编码。我想要这些信息的原因是因为我试图模仿主要浏览器他们支持的字符编码,显然只是因为我发送了相应的“Content-Type”并不意味着浏览器会使用编码做正确的事情。任何其他可能的方法都是受欢迎的,但我不想点击“页面信息”进行50多个字符编码。
答案 0 :(得分:23)
Javascript只能报告正在发生的一些事情。大多数浏览器都不会为您提供足够有用的设置,以便您进行任何核心测试。
有document.inputEncoding
,document.characterSet
(非IE),document.charset
和document.defaultCharset
(IE)之类的内容可能会让您在某些方面获得成功。但这些可能与实际支持一样脆弱。也就是说,如果浏览器“认为”它支持编码但实际上不支持,那么这不是你想知道的吗?
我认为最好的办法是设置一个动态测试页面,其中包含一些相当困难的字符(或一个非常大的测试集),在浏览器中加载测试,让浏览器报告浏览器ID字符串,编码设置,原始编码请求以及testElement.innerHTML
的内容,然后您可以根据预期结果进行验证。
答案 1 :(得分:6)
现在原来的答案已经很老了,对document.characterSet
的支持已经大大改善了。
>>> document.characterSet
IE 11:
"utf-8"
Android 52上的Firefox 52,Chrome 55和Chrome,Safari 10:
"UTF-8"
因此,在大多数情况下,您可以依赖此信息,修复不同的案例。在我的情况下,收集此信息以进行跟踪非常有用。