2017-05-29 15 views
-3

編集UTF16はどのように文字をエンコードしますか?

私は一般的な質問への回答を得られないようです。私は1つの詳細にそれを制限します:以下の私の理解は正しいですか?次のように作業をサロゲート

  1. のバイトの最初のペアがある場合は、D800とDBFFの間にない - は、第二の対が存在しないであろう。
  2. D800とDBFFの間にある場合 - a)2番目のペアb) 2番目のペアはDC00とDFFFの範囲になります。
  3. D800 とDBFFの間の値を持つ1対のUTF16文字はありません。
  4. DC00 とDFFFの間の値を持つ1組のUTF16文字はありません。

これは正しいですか?

オリジナル質問

私はUTF16について読んでみましたが、私はそれを理解できないようです。 "飛行機"と "代理人"とは何ですか? "プレーン"は最初のバイトの最初の5ビットですか?もしそうなら、私たちはこれらの5ビットを使っているので、なぜ32面はありませんか?代理人は何ですか?どのビットに対応していますか?

UTF16はUnicode文字をエンコードする方法であり、時には16ビット、時には32ビットを使用して文字をエンコードすることがあります。 I は、2番目の2バイトが存在することを示す最初の2バイト(最も重要なもの)の値のリストがあると仮定します。

しかし私の代わりに、私はを理解していません。は、おそらく誰かがこれでいくつかの順序を作ることができますか?

+0

@downvotersケアも手助けする? – ispiro

+0

私は「[研究努力はしていません](https://meta.stackexchange.com/a/223482)」と思われます。 [UTF-16 FAQ](http://unicode.org/faq/utf_bom.html#UTF16)についてご質問がありますか? –

+0

@TomBlodgetありがとうございました。私はどのように努力しているのか分かりません。私が読んだ記事へのリンクを含める(理解しなかった)どのようにその質問に役立つでしょうか?しかし、とにかく、あなたはそうであるかもしれないので、それは下落されているのです。私はあなたが私に提供したリンクを読んでいます。ありがとう。 – ispiro

答えて

1

はい、すべて4です。

UTF-16での「ペア」という用語は、2つのUTF-16コード単位を参照しています。最初のコード単位はD800-DBFFで、2番目のコードはDC00-DFFFです。

コード単位は16ビット(2バイト)で、通常は16進数(0x000A)の符号なし整数として記述されます。バイト(0x00 0x0Aまたは0x0A 0x00)の順序は、ファイルまたはストリームの先頭にBOM(0xFEFF)で示され、著者によって指定されます。 (BOMはテキストと同じアルゴリズムでエンコードされていますが、テキストの一部ではありません。バイトオーダーが決定され、システムのネイティブ順序に並べ替えられたバイトは通常破棄されます)。

+1

私は、4つの質問に「ペア」を書いたときに、1対のバイトを意味することを理解したことを確認したいと思います。そして、「一組」は、2バイト(4とは対照的に)で表される文字を意味した。 – ispiro

+0

あなたのすべてのおかげで、ありがとう。私はあなたの助けなしに修正された質問をすることさえできません。特に[このUTF16 FAQリンク](http://unicode.org/faq/utf_bom.html#UTF16)。 – ispiro

関連する問題