文件编码有多重要?

时间:2010-07-13 19:51:51

标签: encoding

文件编码有多重要? Notepad ++的默认值是ANSI,但使用UTF-8会更好吗,或者如果不使用其中一个会出现什么问题?

3 个答案:

答案 0 :(得分:3)

是的,如果所有人都使用UTF-8,那就更好了。

不幸的是,他们没有,主要是因为Windows文本编辑器(以及许多其他Win工具)默认为“ANSI”。这是一个误导性的名称,因为它与ANSI X3.4(aka ASCII)或任何其他ANSI标准无关,但实际上是指当前Windows机器的系统默认代码页。该默认代码页可以在机器之间或同一台机器上更改,此时“ANSI”中具有非ASCII字符(如重音字母)的所有文本文件都将中断。

所以你当然应该用UTF-8创建新文件,但是你必须要知道,其他人给你的文本文件很可能是一堆杂乱的国家特定代码页。

微软的立场是,想要支持Unicode的用户应该使用UTF-16LE文件;它甚至可以误导地在保存框编码菜单中简单地将这种编码称为“Unicode”。 MS采用这种方法是因为在Unicode的早期阶段,人们相信这将是最干净的方式。从那时起:

  • Unicode扩展到超过16位代码点,消除了UTF-16的优势,即每个代码单元都是代码点;

  • UTF-8的发明,其优点是覆盖了所有Unicode,它向后兼容7位ASCII(UTF-16并不像零字节那样),这个原因通常也更紧凑。

世界上其他大部分地区(Mac,Linux,一般网络)都已经作为标准编码转移到UTF-8,为了文件存储或网络目的而避开UTF-16。不幸的是,Windows仍然坚持使用早期Windows NT时代的旧版和无用的代码页面。在不久的将来,没有迹象表明这种变化。

答案 1 :(得分:2)

如果您在使用不同默认编码的系统之间共享文件,则可以使用Unicode编码。如果你没有计划,或只使用ASCII字符集,并且不能使用编码,无论出于什么原因,修改那些(我现在想不到任何,但你永远不知道...),你真的不需要它。

顺便说一下,如果您对系统使用非ASCII字符的文件不使用Unicode编码时会发生这种情况,而该系统的编码与创建文件的编码不同:{{3 }}

答案 2 :(得分:0)

这是非常重要的,因为如果您使用错误的编码,您的whatevertool将显示虚假字符/任何内容。尝试在不使用UTF-8的情况下在记事本中加载一个kyrillic文件并看到很多“?”接下来。 :)