2016-11-15 5 views
1

私は次のような問題を持っている上NBSPでラップ::QMLワードは、Linux

私は実際にNBSP文字(と思うU + 00A0)に関して正しく折り返さないWindows QMLテキスト上で自分のアプリケーションを構築

。しかし、Raspbianの私のRaspberry Piでは、nbspは無視され、テキストは通常​​のスペースのようにラップされているようです。 Windowsでは

  1. 私はそれをエンコーディングで何かを持っているかもしれないと思う5.2
  2. ありラズベリーパイのに対し、私はQT 5.4を持っている:

    はここにいくつかの重要性を有していてもよく、いくつかのものがあります。私はPiでG12コンパイラに入力ファイルをCP1250(QMAKE_CXXFLAGS + = -finput-charset = CP1250をプロジェクトファイルに追加したもの)とする前に、それがうまくいったことを覚えています。まあ、文字列リテラルのいくつかの発音記号のためにこの微調整をしなければなりませんでした(そうでなければ、テキストはラズベリーで絶対に壊れています)。私が言ったように、このコンパイラスイッチを変更する前に、wrapという単語が機能していると思います。

しかし、テキストが表示されないということ以外は何も表示されないという点を除いて、問題はありません。なお、ランダムな文字やその他の文字はありません。これは、エンコーディングに問題はないように見えますが、その代わりに単語ラッピングアルゴリズムitslefがあることは絶対に奇妙です。しかし、私が言ったように、文字列リテラルがLinuxのデフォルト(UTF-8と思われますが...)であれば、それは動作していました。これらの文字列は、それがいかなる重要である場合のQObject :: setPropertyをを使用してQMLテキストにC配列から取り出され、割り当てられているQMLテキストの割り当てについては

...また

は、私はおそらくエンコーディングを変更することはできませんのでご注意します私のソースをUTF-8に変換することができます。なぜなら、文字列のファイルは、通信の相手側で動作する組み込みプロジェクトのために共有されているからです。これは、IDEのためにCP1250でなければなりません。事前に

おかげ

EDIT: 私はいくつかの追加情報を持っている:私はWindows上で影響を受けた文字列リテラルの1つを介して行けば、それは実際にはラズベリーにコンパイルされ、同じリテラルよりも短くなって、でもソースエンコーディングはCP1250に設定されています。たとえば、nbspはWindows(160d)では1バイトのみでエンコードされますが、Raspberry(194d、160d)では2バイトです。それは奇妙なことですね。私は、ソースコードがCP1250でエンコードされていることをg ++で説明した後、同じ方法でリテラルをエンコードする必要があると思いますか?あるいは、これは、WindowsとLinuxの両方でデフォルトで異なるメモリ内の文字列をエンコードするためです。しかし、私はまだどこに問題があるか分かりません。

+1

Qtは、 'QString :: fromLatin1()'や 'QString :: fromLocal8Bit()'のような変換関数を明示的に使用しないか、 'QTextCodec'を使うときに、 –

答えて

0

ケビンKrammerによって示唆されるように、

QString::fromLocal8Bit() 

は溶液でした。