我希望能够通过JavaScript或其他浏览器API以编程方式确定页面的编码。我需要这个信息的原因是,我试图对主要浏览器进行字符编码测试,而仅仅发送适当的“Content-Type”并不意味着浏览器会正确处理编码。如果有其他可能的方法,我将非常欢迎,但我不想为50多种字符编码点击“页面信息”。
我希望能够通过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"
Firefox 52,Chrome 55和Android上的Chrome,Safari 10:
"UTF-8"
看起来对于大多数情况,你可以依靠这些信息来解决问题,只需处理不同的情况。在我的情况下,收集这些信息以进行跟踪是很有用的。