我正在尝试将字符串从 ANSII 转换为 Wide char。我正在使用CA2W(string,CP_UTF8)
which 内部使用MultiByteToWideChar
.
调试时显示MultiByteToWideChar
将°度符号转换为�。
关于如何解决这个问题的任何建议?
MultiByteToWideChar 从给定的编码转换为 UTF-16(即宽字符)。您需要确保指定正确的源编码,这可能不是 UTF-8。
由于 UTF-8 的编码方式,任何超过 ASCII 0x7f 的内容都表明 BYTE 是多字节字符序列的一部分,除非正确指定该序列,否则将导致“?”。更多关于多字节序列编码的信息可以在这里找到: http ://en.wikipedia.org/wiki/UTF-8
基本上,您的源编码可能基于系统当前的代码页,因此您需要在调用 MultiByteToWideChar 时指定 CP_ACP。