2012-09-18 2 views
0

문자열을 ANSII에서 Wide char로 변환하려고합니다. 내부적으로 MultiByteToWideChar을 사용하는 CA2W(string,CP_UTF8)을 사용하고 있습니다.MultiByteToWideChar는 (°)도 기호를 로 변환합니다.

디버깅하는 동안 MultiByteToWideChar은 °도 기호를 로 변환합니다.

해결 방법에 대한 제안 사항이 있으십니까?

+7

코드가 없거나 발생하지 않았습니다 ... – nneonneo

+0

귀하의 의견을 이해할 수 없으므로 정교하게 기재하십시오. – anand

+0

사용중인 코드를 게시하거나 아무도 문제를 이해하거나 조언을 제공 할 수 없습니다. – nneonneo

답변

0

MultiByteToWideChar는 지정된 인코딩에서 UTF-16 (즉, 와이드 char)로 변환합니다. UTF-8이 아닌 소스의 올바른 인코딩을 지정해야합니다.

UTF-8이 ASCII 0x7f를 통해 인코딩되는 방식으로 인해 BYTE가 멀티 바이트 문자 시퀀스의 일부이고 해당 시퀀스가 ​​올바르게 지정되지 않으면 '?'가 표시됩니다. http://en.wikipedia.org/wiki/UTF-8

기본적으로 소스 인코딩이 아마도 시스템의 현재 코드 페이지를 기반으로하고 그래서 당신은 MultiByteToWideChar를 호출 할 때 CP_ACP을 지정해야합니다 : 멀티 바이트 시퀀스의 인코딩에 대한 자세한 내용은 여기에서 찾을 수 있습니다.

+0

문제는 근원이다 감사합니다. – anand

관련 문제