我有一些简单的俄语HTML页面,里面有一些js。
除了IE10,其他浏览器都很好。即使是IE9也没问题。下一个代码包括:

<html lang="ru">
<meta http-equiv="Cоntent-Type" content="text/html"; charset="utf-8">

我也加了一句。用
AddDefaultCharset UTF-8

IE10仍然以西里尔字母编码加载页面(我相信是cp-1251),正确显示字符的唯一方法是在浏览器内手动将其更改为UTF-8(或选择自动检测模式)。
我不明白为什么IE10强制加载1251而不是UTF-8。
要查看的网站http://btlabs.ru

最佳答案

真正导致问题的是服务器发送的HTTP头包括

Content-Type: text/html; charset=windows-1251

这将覆盖任何meta标记。当然,您应该使用meta标记修复错误,如其他答案中指出的,并运行标记验证器来检查代码,但是要修复实际问题,您需要修复.htaccess文件。如果看不到文件和其他服务器端问题,就不可能知道如何修复(例如,服务器设置可能会阻止每个目录.htaccess文件的影响,并应用服务器管理员设置的一个全局文件)。注意,文件名必须有两个c,而不是一个(.htaccess,而不是“.htacess”)。
您可以使用Rex Swain的HTTP Viewer检查标题。
在其他浏览器上工作的原因是,它们应用了现代HTML5原则“BOM赢得一切”。也就是说,一个HTTP头在指定字符编码时赢得一个meta标记,但是如果实际数据以构成字节顺序标记(BOM)的UTF-8编码形式的三个字节开头,那么,不管怎样,数据都将被解释为UTF-8编码。不知什么原因,IE 10没有这样做(IE 11也没有)。
但如果让服务器发送一个声明UTF-8的HTTP头,这就不是问题了。
如果服务器被设置为声明windows-1251,并且您不能更改它,那么您只需要使用它。然后将HTML文件转换为windows-1251,并在meta标记中声明windows-1251。这意味着,如果需要windows-1251中可表示的有限曲目之外的任何字符,则需要使用字符引用来表示它们。

07-24 22:14