如何使Windows 7支持12000(UTF-32)代码页或1200(UTF-16)代码页
How to make Windows 7 to support 12000(UTF-32) code page or 1200(UTF-16) code page?
有没有办法让windows 7支持12000(UTF-32)代码页或1200(UTF-16)代码页?
否。这些代码页不能设置为当前MBCS代码页。(也就是说,"ANSI"API使用的代码页,例如使用终端a(如CreateWindowA
)命名的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版本。
相关文章:
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 从/到 UTF-8/UTF-16 的转换需要(例如:utf8 -> 代码点,然后代码点到 utf16)或(例如:utf8 -> utf16)?
- 通过分隔符分隔包含 UTF-16 BE 文本的uint8_t数组
- 如何从Little Endian UTF-16编码字节中获取C++std::string
- C++ UTF-8/ASCII to UTF-16 in MFC
- 如何C++ WCOUT UTF-16 编码的字符数组?
- 在这种情况下,UTF-16 和 UTF-32 的 BOM 是强制性的
- 查找十六进制字符串是 utf-8 或 utf-16
- 如何在C 17中读取UTF-16文本文件
- 在 Linux 中将 UTF-32 宽字符转换为 UTF-16 宽字符以获取补充平面字符
- C 14:UTF-8/UTF-16与本机字符编码之间的转换
- UTF-16 流中的 CRLF 错误?
- Windows的unicode数据类型使用什么unicode编码(UTF-8、UTF-16等)
- 可以将 UTF-8/UTF-16 选项传递给从C++调用的 JVM
- UTF 16 到 UTF8,使用 C++ 中的 utf8 库
- 使用标准C++无线流读取UTF-8文本并转换为UTF-16
- 将字节数组从UTF-16转换为UTF-8
- 如何使Windows 7支持12000(UTF-32)代码页或1200(UTF-16)代码页
- 如何以与字节序无关的方式读取 UTF-16 代码点的长度
- 为什么使用中文代码页集的Windows控制台可以显示UTF-16编码的字符