ユニコードをロードするのがやや骨の折れる点であることは知っていますが、他の人に提示された解決策を私の特定の問題に適用する方法がわかりません。
画面にテキストをレンダリングできる Win7/C++/DirectX9 GUI ライブラリがあります。西ヨーロッパ言語でしか使用されていないため、これまで問題が発生したことはありません. 今、ハンガリー語で使わなければならないのですが、頭痛の種です! 私の特定の問題は、その言語で見つかった特殊文字をロードすることです。
この例を見てみましょう。FELNŐTTEKNEK は、成人を意味します。
この文字列をアプリにハード コードすると、正しくレンダリングされます。
guiTitle->SetText( L"FELNŐTTEKNEK" );
これにより、文字列が std::wstring として格納され、ID3DXFont::DrawTextW() でレンダリングされます。また、私が選んだフォント、Futura CE が特殊文字 (CE = 中央ヨーロッパ言語) をレンダリングできることも証明しています。
ここまでは順調ですね。次に、テキスト ファイルからテキストを読み込めるようにしたいだけです。大きな問題ではない。しかし結果はイマイチ!特別な Ő は別の文字に置き換えられます。主に Å または Å のような 2 つの文字です (2 番目の文字は通常印刷できません)。
入力テキストファイルがUTF-8としてエンコードされていることを確認し、素朴にロードしようとしています:
wifstream f("data/language.ini");
wstring w;
getline( f, w );
guiTitle->SetText( w );
どういうわけか、私はまだそれをスクランブルしています。UTF-8 として読み込みますか? これを確実にする方法はありますか?テキストエディタに表示されるように、テキストを含むワイド文字列があることを確認する必要があります。
最も感謝して受け取った支援。
シ