我知道加载 unicode 有点费力,但我看不出如何将提供给其他人的解决方案应用于我的特定问题。
我有一个 Win7/C++/DirectX9 GUI 库,可以将文本呈现到屏幕上。我以前从来没有遇到过问题,因为它只用于西欧语言。现在我必须将它与匈牙利语一起使用,这让我很头疼!我的特殊问题是加载该语言中的特殊字符。
举个例子,FELNŐTTEKNEK,意思是成人。
如果我将此字符串硬编码到我的应用程序中,它会正确呈现:
guiTitle->SetText( L"FELNŐTTEKNEK" );
这会将字符串存储为 std::wstring,并使用 ID3DXFont::DrawTextW() 呈现它。这也证明了我选择的字体 Futura CE 能够呈现特殊字符(CE = 中欧)。
到现在为止还挺好。接下来我只是希望能够从文本文件中加载文本。没什么大不了的。然而结果很糟糕!特殊的 Ő 被另一个字符替换,主要是 Å 甚至两个字符,如 Å(第二个通常无法打印)
我通过输入文本文件确保被编码为 UTF-8 并且天真地试图加载它:
wifstream f("data/language.ini");
wstring w;
getline( f, w );
guiTitle->SetText( w );
不知何故,我仍在争吵。我加载为 UTF-8 吗?有没有办法确保这一点?我只需要确保我有一个宽字符串,其中包含文本编辑器中显示的文本。
非常感激地收到任何帮助。
硅