当我在cmd.exe
窗口中运行命令chcp
时,它表示Windows中使用的代码页。
我认为Windows使用UNICODE字符集。
所以,我的问题是:
-
为什么Windows使用ANSI代码页而不是Unicode?
-
Windows 使用 UTF-16 还是 UCS-2?我可以检查这一点(通过命令或 MSDN 链接)吗?
-
UTF-16 或 UCS-2 只是一种编码? 还是字符集?
UTF-8、 UTF-16、UTF-32 等,它们有不同的字符集大小吗?
我很困惑。 请有人定义它们。
-
历史原因和向后兼容性。 Windows本身是一个基于Unicode的操作系统,从NT时代开始就一直存在。 但是许多遗留(甚至当前)应用程序不是为 Unicode 编写的。 启用 Unicode 的应用不使用 ANSI 代码页,除非它们需要在 ANSI 和 Unicode 之间转换运行时数据。
-
Microsoft在Windows 2000中切换到UTF-16。 在此之前,它使用UCS-2。 请参阅 Microsoft Windows 中的 Unicode。
-
UTF-16 和 UCS-2 都只是同一 Unicode 字符集的编码。 UTF-16 的发明是为了支持 U+FFFF 以上的编码代码点,UCS-2 无法处理这些代码点。
所有 UTF (包括许多您尚未命名的 UTF)都只是同一 Unicode 字符集的编码。名称中指定的数字是编码代码单元中使用的位数(UTF-8 使用 8 位代码单元,UTF-16 使用 16 位代码单元等)。