ページ 11

文字コードについて

Posted: 2009年6月16日(火) 16:32
by bitter_orange
お世話になっております。
C言語と DirectX 9.0c で現在ゲーム制作をしています。
DirectX の文字表示は重いため、テクスチャーに描画して絵として表示しようと思っているのですが、
2バイトコードの変換時に失敗してしまい、文字化けしてしまいます。
なお、以下の引数で添付した関数を呼んでいます。

LPDIRECT3DTEXTURE9 string_tex = NULL;

StrTex_DrawText("あいうえお\nGAME" , &string_tex);

これを添付したプログラムで呼んでいます。
添付したプログラムは一番下の関数から順に呼んでいます、
「あいうえお」は文字化けしているのですが、「GAME」は正しく表示されている状態です。
なのでユニコードの変換の仕方を教えていただきたいです。

OSは[Windows Vista]で開発環境は[Microsoft Visual C++ 2008 Express Edition]です。

よろしくお願いします。

Re:文字コードについて

Posted: 2009年6月16日(火) 16:52
by YuO
UTF-16は0x0000~0x00FFの範囲について,ISO-8859-1と一致しますが,それ以外の範囲は,他の文字コードと基本的に一致しません。
そのため,単純にShift_JISの文字を変換することはできません。
Shift_JIS → UTF-16であれば,MultiByteToWideChar APIなどを使って変換することができます。

Re:文字コードについて

Posted: 2009年6月16日(火) 17:20
by bitter_orange
YuO様のご指摘通り、 MultiByteToWideChar 関数を使うことで解決しました。
本当に助かりました。
YuO様ありがとうございました。