Я знаю, что загрузка Unicode - это довольно трудоемкий вопрос, но я не понимаю, как применить решения, представленные другим, к моей конкретной проблеме.
У меня есть библиотека графических интерфейсов Win7 / C ++ / DirectX9, которая может отображать текст на экране. У меня никогда раньше не было проблем, поскольку они использовались только с западноевропейским языком. Теперь я должен использовать это с венгерским, и это вызывает у меня головную боль! Моя особая проблема заключается в загрузке специальных символов, найденных на этом языке.
Возьмите этот пример, FELNŐTTEKNEK, что означает ВЗРОСЛЫЙ.
Если я жестко закодирую эту строку в своем приложении, она будет правильно отображаться:
guiTitle->SetText( L"FELNŐTTEKNEK" );
Это сохраняет строку как std :: wstring, представляя ее с помощью ID3DXFont :: DrawTextW (). Это также доказывает, что выбранный мной шрифт Futura CE способен отображать специальные символы (CE = Центрально-Европейский).
Пока все хорошо. Далее я просто хочу иметь возможность загружать текст из текстового файла. Ничего страшного. Однако результаты плохие! Специальный Ő заменяется другим символом, в основном Å или даже двумя символами, например Å (2-й обычно непечатаемый)
Я убедился, что входной текстовый файл закодирован как UTF-8 и наивно пытаюсь загрузить его таким образом:
wifstream f("data/language.ini");
wstring w;
getline( f, w );
guiTitle->SetText( w );
Почему-то я все еще карабкаюсь. Я загружаю как UTF-8? Есть ли способ обеспечить это? Мне просто нужно убедиться, что у меня широкая строка с текстом, как показано в текстовом редакторе.
Любая помощь, полученная с благодарностью.
Si