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