問題タブ [qchar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
158 参照

qt - QChar は、乗算記号 '×' の負の Latin1 コードを格納します。

乗算記号 の Latin1 コードを取得したいのですが、×内部の値を確認するQChar-41'×'.

私のコード:

デバッグすると、2 行目にQChar値が表示されます-41'×'

コードを変更しました:

しかし、私はむしろ 215 という値を取得し、158 を期待しています。

0 投票する
1 に答える
1291 参照

c++ - UTF-8 バイト配列から次の 1 文字だけを効率的に変換する方法は?

私は動作するこのコードを持っています:

bpは でありQByteArray::const_pointer、はUTF ut-8 でエンコードされた Unicode コードポイントの予想される最大長です。QChar c次に、から最初のものを取得しQString qsます。QChar任意の量のQByteArrayを aに変換しQStringてから最初の のみを取得することなく、UTF-8 バイト配列から単純に次のもののみを取得する、より効率的な方法があるはずQCharです。

編集以下のコメントから、私の質問をまだ誰も理解していないことは明らかです。だから私はいくつかの基本から始めます。UTF-8 と UTF-16 は、世界標準の Unicode の 2 つの異なるエンコーディングです。インターネットおよび Unicode テキスト ファイルを介して転送するための最も一般的で推奨される Unicode エンコーディングは UTF-8 であり、UTF-8 エンコーディングで 1 ~ 4 バイトを使用するすべての Unicode コードポイントになります。一方、UTF-16 は、プログラム内で文字を処理する場合により便利です。したがって、世の中に出回っているソフトウェアの大部分は、これら 2 つのエンコーディングの間で常に変換を行っています。QChar は、0x00 から 0xffff までのすべての Unicode コードポイントのより便利な UTF-16 エンコーディングであり、これまでに定義され、一般的に使用されている言語と記号の大部分をカバーしています。サロゲート ペアは、より高い Unicode コード ポイント値に使用されます。

テキスト ファイルを に読み込むとQPlainTextEdit、変換は自動的にバックグラウンドで行われます。aQStringから aを読み取るQByteArrayことも自動的に行うことができます (ロケールとコーデックの設定が UTF-8 に設定されている場合)、または上記のコードのように toUtf8() または fromUtf8() を使用して明示的に行うことができます。

他の方向への変換は、次のコードを使用して、暗黙的 (舞台裏) または明示的に効率的に行うことができます。

また

どこbaQByteArraysiがありQString::const_iteratorます。これらはまったく同じことを行います (コーデックが UTF-8 に設定されていると仮定します)。どちらも、次の ( 1 ) 文字を、指定された から にQChar変換し、QStringその結果、 に 1 つ以上のバイトが追加されbaます。

私がやろうとしているのは、一度に1文字だけを効率的に逆変換することです。内部的には、これは変換されるすべての文字に対して行われており、非常に効率的に行われていると確信しています。

問題QString::fromUtf8(p,n)は、変換する文字数ではなく、処理するバイトn数です。したがって、3 (実際にサロゲート ペアを処理する場合は 4) になる可能性のある最大バイト数を考慮する必要があります。したがって、次の文字だけが必要な場合は、数バイトを処理する準備ができている必要があります。結果が複数の文字である場合、それらは変換されてから破棄されます。QString

Q: これを1 文字ずつ変換する関数はありますか?