为什么Windows使用ANSI代码页而不是UNICODE?

时间:2017-10-11 00:20:30

标签: windows unicode encoding utf-16 ucs2

当我在chcp窗口中运行命令cmd.exe时,它代表Windows中使用的代码页。

我认为Windows使用UNICODE字符集。

所以,我的问题是:

  1. 为什么Windows使用ANSI代码页而不是Unicode?

  2. Windows使用UTF-16还是UCS-2?我可以检查一下(通过命令或MSDN链接)吗?

  3. UTF-16或UCS-2只是一种编码?或者也是一个字符集?

  4. UTF-8,UTF-16,UTF-32等。他们有不同的字符集大小吗?

  5. 我很困惑。请有人定义它们。

1 个答案:

答案 0 :(得分:5)

  1. 历史原因和向后兼容性。 Windows本身是一个基于Unicode的操作系统,自从NT时代以来就一直存在。但是许多传统(甚至是当前)的应用程序都不是为Unicode编写的。启用Unicode的应用程序不使用ANSI代码页,除非它们需要在ANSI和Unicode之间转换运行时数据。

  2. Microsoft在Windows 2000中切换到UTF-16。在此之前,它使用了UCS-2。请参阅Unicode in Microsoft Windows

  3. UTF-16和UCS-2都只是相同Unicode字符集的编码。 UTF-16的发明是为了支持U + FFFF以上的编码码,而UCS-2无法处理。

  4. 所有UTF(包括许多未命名的UTF)只是相同Unicode字符集的编码。名称中指定的数字是编码代码单元中使用的位数(UTF-8使用8位代码单元,UTF-16使用16位代码单元等)。