Meta字符集windows-1252与UTF-8的区别

9

我的HTML页面使用<meta charset="windows-1252">

  1. 更改为UTF-8是否推荐?为什么?
  2. 我检查了一些使用UTF-8的页面,其中一些数学符号出现了问号。例如:x应该被更改为×才能正确显示。我尝试使用CpConverter进行转换,但并没有成功地转换所有符号。

有更好的方法可以转换多个文件吗?


UTF-8 可以正确显示我的名字,所以我建议使用它 :) - Breandán
你正确地避免了更长的“text/html”变体(https://dev59.com/iW445IYBdhLWcg3wytIU) - Charles Merriam
3个回答

20
  1. UTF-8是普遍认可的标准,在任何地方都可以使用。Windows任何编码是Windows特有的,不保证在任何计算机上都能正常工作。另外,可以参考这里这里
  2. 如果想更改文件的编码方式,可以用多种方法。您可以在文本编辑器或集成开发环境中查找编码类型,也可以使用以下命令(未经测试,但应该可行):

iconv -f WINDOWS-1252 -t UTF-8 filename.txt


我很抱歉,是的。您可以始终使用记事本 - 文件->另存为->编码->UTF-8。 - Mateusz
抱歉,这里还有一个 Windows 的翻译 - 请点击这里查看。 - Mateusz

0

对于你的第一个问题,答案是肯定的。推荐您为所有HTML5文档更改所有字符编码属性。

这是因为它是W3C当前的HTML5标准。我会基于这个原因在任何给定站点中更改所有页面作为所有标记呈现的标准化是不可避免的。

在具有查找/替换功能的任何编辑器上都可以轻松完成此操作。只需使用该功能在每个文档中查找术语

<meta charset="windows-1252">

并将其替换为

<meta charset="utf-8"/>

UTF-8字符编码应该能够处理您的数学字符,但如果不能,请保留您原来的字符集。对于仅包含文本的其他页面,您将希望将其更改为UTF-8。这是W3Schools关于您字符编码的立场。

HTML5规范鼓励Web开发者使用UTF-8字符集,该字符集涵盖了世界上几乎所有的字符和符号!--W3Schools.com 如果文件大小是个问题,那么您只需要保留那些需要特殊数学字符编码才能正确呈现的文档,如果它们不能正确呈现。我认为这不会对您的浏览器加载时间造成足够的影响,以至于影响您的SEO。如果您有很多包含数学符号的页面,则可能会出现问题,如果您正在寻找热门网站或业务,则可能会成为问题。否则,文件大小非常小,文件大小的问题似乎不重要。
对于其他文档,即使您已经有BOM,您仍应将它们的编码更改为UTF-8。
如果你的文件开头有UTF-8字节顺序标记(BOM),那么除了Internet Explorer 10或11之外的最近浏览器版本将使用它来确定您页面的编码为UTF-8。它比任何其他声明(包括HTTP标题)具有更高的优先级。如果你有BOM,你可以跳过元编码声明,但我们建议你保留它,因为它有助于查看源代码的人确定页面的编码。 --w3.org

-4

这是一个老问题,但我的答案可能会帮助某些人做出更好的决定。

从ANSI(windows-1252)更改为UTF-8大约会使HTML文件的大小增加一倍。(取决于文件中使用的字符)

如果您想测试这个问题,只需在记事本中创建一个包含以下字符的文件:

الف

这些字符都可以在ANSI(Windows-1256)和Unicode中找到。将文件分别保存为ANSI(Windows-1256)编码和UTF-8编码。

UTF-8文件的大小:9字节

ANSI(Windows-1256)文件的大小:3字节

如果您想更改页面的字符集,只需在记事本或任何其他编辑器中打开它们,并使用UTF-8编码另存为即可。


6
如果你在使用标准的字母数字字符,采用UTF-8编码不会增加HTML文件的大小。 你所写的那些字符无法用ASCII表示。如果保存为ASCII格式,则会转换为“?”。 当你使用Notepad保存UTF-8文件时,这9个字节中的3个是BOM:字节序列0xEF、0xBB、0xBF。(只有6个字节用于表示你输入的字符。) - Matthew Nakayama
这些字符使用ASCII保存没有问题。它们是标准的波斯/阿拉伯字符。但是,如果在UTF-8文件中使用它们,将会使文件大小加倍。 - Hossein
1
字符 الف 在 ASCII 中不存在。无法使用 ASCII 对其进行编码。 - user8017719
在投反对票之前,请先尝试我之前所说的。 - Hossein
2
正如@Isaac所说,这些字符不是ASCII码,但您似乎将ASCII码与Windows-1256混淆了,后者允许使用阿拉伯字符。 - Rich S
是的!它们是ANSI(Windows-1256),而不是ASCII。 - Hossein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接