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

Why does Windows use ANSI Code page instead of UNICODE?

当我运行命令chcpcmd.exewindow时,它代表Windows.

中使用的代码页

我认为Windows使用了UNICODE字符集。

所以,我的问题是:

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

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

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

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

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

  1. 历史原因和向后兼容性。 Windows 本身是一个基于 Unicode 的 OS,从 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(包括许多您未命名的)都只是同一 Unicode 字符集的编码。名称中指定的数字是编码代码单元中使用的位数(UTF-8 使用 8 位代码单元,UTF-16 使用 16 位代码单元,等等)。