12

AUTF-8 ではU+0041 LATIN CAPITAL LETTER A. AASCII では065.

UTF-8 はどのように ASCII と下位互換性がありますか?

4

3 に答える 3

26

ASCII は、8 ビット バイトの最初の 7 ビットのみを使用します。したがって、 から00000000までのすべての組み合わせ01111111。この範囲の 128 バイトすべてが特定の文字にマップされます。

UTF-8 はこれらの正確なマッピングを保持します。ASCII で表される文字01101011は、UTF-8 でも同じバイトで表されます。他のすべての文字は、各バイトに最高ビットが設定された複数バイトのシーケンスでエンコードされます。つまり、UTF-8 のすべての非 ASCII 文字のすべてのバイトは、形式1xxxxxxxです。

于 2013-04-12T07:52:27.753 に答える
7

ASCII は Unicode のサブセットであるため、Unicode には ASCII との下位互換性があります。Unicode は単純にすべての文字コードを ASCII で使用し、さらに追加します。

文字コードは通常 Unicode では 0041 と書き出されますが、文字コードは数値であるため、0041 は (16 進数の) 41 と同じ値です。

UTF-8 は文字セットではなく、Unicode で使用されるエンコーディングです。複数バイトのエンコーディングに使用されるコードは、使用されていない ASCII 文字セットの一部にあるため、たまたま ASCII とも互換性があります。

Unicode および UTF-8 と互換性があるのは 7 ビット ASCII 文字セットだけであることに注意してください。IBM850 や Windows-1250 などの ASCII ベースの 8 ビット文字セットは、UTF-8 が持っている文字セットの一部を使用します。複数バイトのエンコーディング用のコード。

于 2013-04-12T07:55:48.783 に答える
6

どうして:

すべてが既に ASCII であり、下位互換性のある Unicode 形式を持っているため、採用がはるかに容易になりました。プログラムを UTF-16 に変換するよりも UTF-8 を使用するように変換する方がはるかに簡単であり、そのプログラムは ASCII を引き続き使用することで下位互換性の性質を継承します。

どのように:

ASCII は 7 ビットのエンコーディングですが、常に 8 ビットのバイト単位で格納されます。つまり、1 ビットは常に未使用です。

UTF-8 は単にその追加ビットを使用して非 ASCII 文字を示します。

于 2013-04-12T07:53:04.570 に答える