2016-11-15 63 views
1

我有以下問題::QML字與NBSP包裹在Linux上

當我在Windows上構建QML文本我的應用程序的確需要關於NBSP字符(U + 00A0我認爲)正確地換行。然而,在Raspbian的Raspberry Pi上,似乎忽略了nbsp,並且文本被封裝,就好像它只是一個普通的空間。

有幾件事情,可能在這裏有一定的重要性:

  1. 在Windows上我有QT 5.4,而在樹莓派有5.2
  2. 我認爲它可能是與編碼。事情是,我記得它在我強制Pi上的G ++編譯器將輸入文件作爲CP1250(我將QMAKE_CXXFLAGS + = -finput-charset = CP1250添加到項目文件中)之前工作。好吧,我不得不做這個調整,因爲在一些字符串文字中的變音符號(否則文本在樹莓上絕對是破碎的)。所以正如我所說的,我認爲在我改變這個編譯器開關之前wrap這個詞已經起作用了。

但是,顯示任何內容都沒有任何問題,只是文本碰巧不應該被打破。請注意,不存在任何「隨機」字符或其他東西,而是一個常規空間。這看起來很奇怪,因爲這看起來沒有編碼問題,而是使用wrapping algorithms itslef這個詞。但正如我所說的,它曾經認爲字符串文字是Linux上的默認值(UTF-8,我猜...)。

對於QML文本分配這些字符串由C陣列使用的QObject ::如果的setProperty是任何重要然後將其分配給QML文字...

另外請注意,我也許不能改變編碼我的消息來源是UTF-8,因爲帶有字符串的文件也可用於通信另一端的嵌入式項目,並且由於IDE而必須是CP1250。

在此先感謝

編輯: 我有一些額外的信息:如果我通過在Windows上受影響的字符串文字之一,它實際上比同一文字上覆盆子編譯較短,源即使編碼設置爲CP1250。例如,nbsp在Windows(160d)上只編碼一個字節,但在樹莓(194d,160d)上是兩個字節。這很奇怪,不是嗎?我希望在解釋g ++之後,在CP1250中編碼源代碼之後,它應該以相同的方式對文字進行編碼?或者可能不是因爲這是在Windows和Linux上默認情況下不同的內存中的字符串編碼。但是我仍然沒有看到問題出在哪裏。

+1

如果你沒有明確地使用諸如'QString :: fromLatin1()'或'QString :: fromLocal8Bit()'或者使用'QTextCodec'的轉換函數,那麼Qt希望源代碼中的字符串是UTF- –

回答

0

如所建議的通過凱文克拉姆,

QString::fromLocal8Bit() 

是溶液。