- - PR -
Unicodeでの文字化けについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2009-02-05 00:44
以下のようなコードをMFCで作ったアプリケーションで使用するとします。
MessageBox(_T("\\xE3\\x82\\xBF")); // 'タをUTF-8で表示' MessageBox(_T("\\x30\\xBF")); // 'タをUTF-16で表示' MessageBox(_T("\\x30\\xBF")); // 'タをSHIFT-JISで表示' そして、ユニコードビルドするとすべて文字化けします。 次にこれをマルチバイトビルドすると、最後のSHIFT−JISだけ正しく表示されます。 マイクロソフトがUTF-8をサポートしないのは知っていましたが、なぜUTF-16も文字化けが出るのでしょうか? もしご存知の方がいらっしゃったら教えてください。 |
|
投稿日時: 2009-02-05 01:29
_Tの使い方を間違えていますね。
Shift_JISのときだけうまくいくということなので、文字セットを 「マルチバイト文字セットを使用する」 の設定になっているのでしょうね。 その設定でUnicode文字を表示するには、明に ::MessageBoxW を使ってください。 (CWnd::MessageBoxでは最終的に::MessageBoxAを呼んでしまう。) それと_Tは文字コードを直接扱うのであればほとんど不要です。 もっとも、文字セットを 「Unicode文字セットを使用する」 の設定にして、Shift_JISコードの文字を常にUnicode文字列に変換して使うように して統一をとるべきでしょう。 |
1