文字列をANSIIからワイド文字に変換しようとしています。CA2W(string,CP_UTF8)
内部で使用しているを使用していますMultiByteToWideChar
。
デバッグ中に、MultiByteToWideChar
°度記号を�に変換することが示されます。
これを解決する方法について何か提案はありますか?
MultiByteToWideCharは、指定されたエンコーディングからUTF-16(つまりワイド文字)に変換します。ソースの正しいエンコーディングを指定していることを確認する必要があります。これはおそらくUTF-8ではありません。
UTF-8がASCIIでエンコードされる方法により、0x7fは、BYTEがマルチバイト文字シーケンスの一部であることを示し、そのシーケンスが正しく指定されていない場合、「?」になります。マルチバイトシーケンスのエンコーディングの詳細については、http: //en.wikipedia.org/wiki/UTF-8を参照してください。
基本的に、ソースエンコーディングはおそらくシステムの現在のコードページに基づいているため、MultiByteToWideCharを呼び出すときにCP_ACPを指定する必要があります。