0

文字列をANSIIからワイド文字に変換しようとしています。CA2W(string,CP_UTF8)内部で使用しているを使用していますMultiByteToWideChar

デバッグ中に、MultiByteToWideChar°度記号を�に変換することが示されます。

これを解決する方法について何か提案はありますか?

4

1 に答える 1

0

MultiByteToWideCharは、指定されたエンコーディングからUTF-16(つまりワイド文字)に変換します。ソースの正しいエンコーディングを指定していることを確認する必要があります。これはおそらくUTF-8ではありません。

UTF-8がASCIIでエンコードされる方法により、0x7fは、BYTEがマルチバイト文字シーケンスの一部であることを示し、そのシーケンスが正しく指定されていない場合、「?」になります。マルチバイトシーケンスのエンコーディングの詳細については、http: //en.wikipedia.org/wiki/UTF-8を参照してください。

基本的に、ソースエンコーディングはおそらくシステムの現在のコードページに基づいているため、MultiByteToWideCharを呼び出すときにCP_ACPを指定する必要があります。

于 2012-09-18T09:43:22.247 に答える