有没有办法让Windows 7支持12000(UTF-32)代码页或1200(UTF-16)代码页?
答案 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变体)。此外,您可以使用MultiByteToWideChar
和WideCharToMultiByte
在UTF-32,UTF-8,UTF-16BE和UTF-16LE之间进行转换。
如果您正在编写仅限Windows的程序,则应仅使用UNICODE API。如果您正在为可移植的C运行时编写程序,您可能希望为Windows构建UNICODE版本,为Unix / Linux构建UTF-8版本。