对于源代码文件编码,ANSI对于更丰富的编码系统(例如UTF-8)有什么好处?

时间:2011-08-20 19:14:34

标签: java php encoding

与UTF-8相比,ANSI似乎有限,但它是Notepad ++中的默认文件编码,所以我很想知道。

3 个答案:

答案 0 :(得分:3)

好吧,如果可以编码ANSI中的所有内容(无论ANSI在您的计算机上是什么意思;它是一个非常模糊的术语),那么它在UTF-8中可能会更短。对于非ASCII字符,ANSI编码仍然可以在一个字节中编码每个字符,而在UTF-8中它们将占用更多字节。

这是一个微小的优势,而且缺点是重要的IMO - 我绝对会选择UTF-8。

答案 1 :(得分:1)

严格来说,“好处”可能是使用它可能占用更少的字节,因为有许多字符在ANSI的一个字节中编码,在UTF-8中编码为两到三个。例如,弗罗林,mdash,ndash,时代符号和一些重音罗马字母。

Windows API中的本机操作可能会更快。

你放弃了很多,将你自己限制在256个字符而不是UTF-8的100万个字符。

答案 2 :(得分:1)

对Jon的回答进行了解读:

UTF-8编码的空间要求,如提取Wikipedia's UTF-8 article并稍加格式化/组合:

  1. 因此前128个(范围[0, 0x7f])字符(US-ASCII)需要一个字节。
  2. 下一个1,920(范围[0x80,0x07ff])字符需要两个字节进行编码。 ...
  3. 基本多语种平面(其中包含几乎所有常用字符)的其余部分(范围[0x0800,0xffff])需要三个字节。
  4. Unicode的其他平面中的字符需要四个字节,其中包括较少的常见CJK字符和各种历史脚本。
  5. 查看ANSI to Unicode mapping可以看出,一半的ANSI字符(ASCII集)与Unicode(1字节编码)对齐,超过127的多个值也属于[0,0x7FF] Unicode范围(2个字节),并且有较少的常见值在超过0x07ff时映射到Unicode(需要3个字节才能以UTF-8编码)。

    现在,至于为什么这是默认编码 - 与Notepad ++作者交谈:)

    快乐的编码。