2015-05-28 80 views
1

我正在開發一個Qt GUI應用程序來解析出使用wchar_t(默認UTF-16編碼)存儲unicode文本的自定義windows二進制文件。我已經使用QString::fromWcharArray構建的QString,並傳遞給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-4UTF-16wchar_t的大小是多少?

其次有替代API:嘗試QString::fromUtf16

最後你使用了什麼樣的角色?希伯來語/西里爾/日本/ ???。你確定這些字符是由你正在使用的字體支持嗎?

+0

問題在於缺省字體不支持字符集。 – shebaw