Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html IE 10不在UTF-8中加载页面_Html_Encoding_Utf 8_Character Encoding_Internet Explorer 10 - Fatal编程技术网

Html IE 10不在UTF-8中加载页面

Html IE 10不在UTF-8中加载页面,html,encoding,utf-8,character-encoding,internet-explorer-10,Html,Encoding,Utf 8,Character Encoding,Internet Explorer 10,我有一些简单的俄文HTML页面,里面有一些js。 除IE10外,所有浏览器都运行良好。即使IE9也可以。下一个代码包括: <html lang="ru"> <meta http-equiv="Cоntent-Type" content="text/html"; charset="utf-8"> IE10仍然以西里尔字母编码(我相信是cp-1251)加载页面,以正确方式显示字符的唯一方法是在浏览器中手动将其更改为UTF-8(或选择自动检测模式) 我不明白为什么IE10强制

我有一些简单的俄文HTML页面,里面有一些js。 除IE10外,所有浏览器都运行良好。即使IE9也可以。下一个代码包括:

<html lang="ru">
<meta http-equiv="Cоntent-Type" content="text/html"; charset="utf-8">
IE10仍然以西里尔字母编码(我相信是cp-1251)加载页面,以正确方式显示字符的唯一方法是在浏览器中手动将其更改为UTF-8(或选择自动检测模式)

我不明白为什么IE10强制加载1251而不是UTF-8


要检查的网站是

可能您忘记了更改
cöcontent=text/html
cöntent=“text/html”

正如肖恩已经指出的,它也可以是
content=“text/html;charset=utf-8”

但是,由于您已经尝试了这两种方法,您能否确认IE10的输出是否类似

在这方面我实在帮不上什么忙,因为我这里只有一个IE10在线仿真器

到目前为止,可能的问题有:

  • 我明白了,那个,把它放好
  • IE处理内容和字符集属性的问题

    • 可能是因为“内容”中的“o”不是ascii“o”。请注意,在Stackoverflow中它不是红色的?然后我把它复制到一个好的文本编辑器中,发现它确实不是一个o。因为“o”并不是真正的ascii“o”,所以在每个web浏览器中可能都应该忽略整行,这取决于它使用的默认字符集。微软和IE因选择坏的默认值而臭名昭著,这就是我为什么它在IE中不起作用的原因

      但codingaround也有很好的建议。最好在属性值周围加引号。但这不应该破坏网络浏览器

      您应该在开始时使用doctype:

      <!DOCTYPE html>
      <html lang='ru'>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      
      
      

      但真正的罪魁祸首是你的内容和字符集问题。注意我的台词。我的很不一样这就是问题所在。请注意,我的有两个ascii'o',一个在“内容类型”中,另一个在“内容=”。

      正如肖恩所指出的,复制并粘贴以下内容:

      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      
      
      

      这是一个非常好的例子,说明了看起来像英语Ascii字母的非Ascii字母会把事情搞得一团糟

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

      Content-Type: text/html; charset=windows-1251
      
      这将覆盖任何
      meta
      标记。当然,您应该使用
      meta
      标记修复错误,正如其他答案中指出的那样,并运行标记验证器检查代码,但要修复实际问题,您需要修复
      .htaccess
      文件。如果看不到文件和其他服务器端问题,就无法知道如何修复(例如,服务器设置可能会阻止每个目录
      .htaccess
      文件的效果,并应用服务器管理员设置的一个全局文件)。请注意,文件名必须有两个c,而不是一个(
      .htaccess
      ,而不是“.htaccess”)

      您可以检查标题是什么,例如使用Rex Swain的标题

      在其他浏览器上工作的原因是它们应用了现代HTML5原则“BOM赢得一切”。也就是说,HTTP头在指定字符编码时赢得了一个
      meta
      标记,但是如果实际数据以构成字节顺序标记(BOM)的UTF-8编码形式的三个字节开始,那么,不管怎样,数据都将被解释为UTF-8编码。不知什么原因,IE10没有做到这一点(IE11也没有)

      但是,如果您只是让服务器发送一个声明UTF-8的HTTP头,那么这不会是一个问题


      如果服务器已设置为声明windows-1251,并且您不可能更改它,那么您只需要接受它。然后将HTML文件转换为windows-1251,并在
      meta
      标记中声明windows-1251。这意味着,如果您需要windows-1251中可表示的有限指令集之外的任何字符,则需要使用字符引用来表示这些字符。

      。IE10仍在出错:(同时尝试了
      -结果相同。编辑。感谢lightning的SO,它现在在记事本中工作,但仍然不起作用。嗯,我将使用它玩一玩。我编辑了我的答案。请注意,HTML 4中的元元素上没有charset属性。charset是“content”属性值的一部分:
      content=“text/html;charset=utf-8”
      但在HTML 5中,他们添加了一个单独的字符集属性,没有“http equiv”属性。Microsoft因在所有事情都不是单向的情况下出错而臭名昭著。其他浏览器更宽容的是,IE.Shawn在“o”问题上是正确的。您修复了一个“o”而不是另一个“o”。您仍然需要修复该问题“内容类型”中的“o”。请将元放在(内部)
      之后。其余的都已更正。Joop是正确的。您的
      元素应该在
      元素中。回答得好!谢谢!
      Content-Type: text/html; charset=windows-1251