Eug*_*nio 2 html utf-8 character-encoding
这是一个test.html文件,用我的文本编辑器以latin 1格式保存:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
è
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果以chrome格式查看文件,则è字符显示为问号.我不明白为什么:è是拉丁语1的一部分,拉丁语1应该与utf-8的(子集)兼容,所以字符è的代码在拉丁语1和utf-8中不应该相同?
如果我将charset更改为ISO-8859-1当然一切都很好.
谢谢
您将字符集/代码页的概念与编码混淆.UTF-8和ISO-8859-1(Latin-1)是编码,它们是如何以字节表示字符的系统,而不是您选择的字符列表.
您将文件保存为ISO-8859-1,因此您的文件具有0xE8.您告诉浏览器该文件是以UTF-8编码的,因此浏览器会尝试根据UTF-8的规则解码您的文件.并且0xE8在UTF-8中无效.
当您告诉浏览器在ISO-8859-1中对其进行解码时,它的工作原理是因为0xE8在ISO-8859-1中有效,并且根据ISO的值从ISO-8859-1的代码页显示一个字符0xE8.
此外,ISO-8859-1是unicode(utf编码的"代码页" )的子集,而不是UTF-8.这意味着ISO-8859-1代码页中的前256个字符与unicode中前256个字符的字符相同.
而且还有更多.浏览器实际上从不使用ISO-8859-1来解码您的页面,而是秘密使用Windows-1252.这也已在HTML-5草案中指定