2015-05-28 6 views
1

Я разрабатываю приложение Qt GUI для анализа пользовательского двоичного файла Windows, который хранит текст unicode с использованием wchar_t (по умолчанию кодировка UTF-16). Я построил QString с помощью QString::fromWcharArray и передал его QTextBrowser::insertPlainText как этотQTextBrowser не отображает неанглийские символы

wchar_t *p = ; // pointer to a wchar_t string in the binary file 
QString t = QString::fromWCharArray(p); 
ui.logBrowser->insertPlainText(t); 

Отображаемый текст отображает ASCII символы правильно, но не-ASCII символы отображаются в виде прямоугольной коробки вместо. Я следил за кодом в отладчике, а p указывает на действительную строку wchar_t, а построенная QString t также является допустимой строкой, соответствующей строке wchar_t. Проблема возникает при печати на QTextBrowser.
Как это исправить?

+1

Дубликат этого вопроса http://stackoverflow.com/questions/28495855/why-unicode-fonts-are-not-showing-properly-in-the-qtextbrowser-when-unicode-cont? – rpsml

+0

@ rpsml, я проверил это, прежде чем спрашивать. В его случае я думаю, что проблема связана с чтением файла с правильной кодировкой. В моем случае я работаю над файлом с отображением памяти, и генерация QString действительно правильна, проверяя его под отладчиком. Проблема заключается в том, чтобы отправить его на QTextBrowser. – shebaw

+1

Какой шрифт вы используете? Поддерживает ли шрифт требуемые символы? –

ответ

1

Прежде всего read documentation. Поэтому в зависимости от системы у вас будет другая кодировка UCS-4 или UTF-16! Какой размер wchar_t?

Во-вторых, есть альтернативный API: попробуйте QString::fromUtf16.

И, наконец, какого персонажа вы используете? Иврит/кириллицы/японский/???. Вы уверены, что эти символы поддерживаются шрифтом, который вы используете?

+0

Проблема заключалась в том, что шрифт по умолчанию не поддерживает набор символов. – shebaw