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