MultiByteToWideChar将(°)度符号转换为

时间:2012-09-18 07:09:20

标签: c++ windows winapi unicode

我正在尝试将字符串从ANSII转换为Wide char。我正在使用内部使用CA2W(string,CP_UTF8)的{​​{1}}。

调试时显示MultiByteToWideChar将°度符号转换为 。

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:0)

MultiByteToWideChar从给定编码转换为UTF-16(即宽字符)。您需要确保指定源的正确编码,该编码可能不是UTF-8。

由于UTF-8的编码方式,任何超过ASCII 0x7f的内容表明BYTE是多字节字符序列的一部分,除非正确指定该序列,否则将产生“?”。有关多字节序列编码的更多信息,请参见: http://en.wikipedia.org/wiki/UTF-8

基本上,您的源编码可能基于系统的当前代码页,因此您需要在调用MultiByteToWideChar时指定CP_ACP。