如何使Windows 7支持12000(UTF-32)代码页或1200(UTF-16)代码页?

时间:2013-11-20 11:04:45

标签: c++ unicode codepages

有没有办法让Windows 7支持12000(UTF-32)代码页或1200(UTF-16)代码页?

1 个答案:

答案 0 :(得分:1)

没有。这些代码页不能设置为当前的MBCS代码页。 (即,“ANSI”API使用的代码页,例如使用诸如CreateWindowA之类的终端A命名的Windows函数,或者在C或C ++运行时中由C语言环境使用的代码页。

  • 不支持UTF-32,因为Windows MBCS代码页支持仅允许占用一个或两个字节的字符。

  • 出于同样的原因,不支持UTF-16 - BMP之外的字符需要四个字节来表示。

  • 此外,不支持UTF-8,因为有些字符需要四个字节来表示。

您可以使用UNICODE API(即W变体,例如CreateWindowW和宽字符C和C ++库函数)本机使用UTF-16(Little-endian变体)。此外,您可以使用MultiByteToWideCharWideCharToMultiByte在UTF-32,UTF-8,UTF-16BE和UTF-16LE之间进行转换。

如果您正在编写仅限Windows的程序,则应仅使用UNICODE API。如果您正在为可移植的C运行时编写程序,您可能希望为Windows构建UNICODE版本,为Unix / Linux构建UTF-8版本。