UTF-8とUTF-16の違い

Anonim

UTF-8とUTF-16

UTFはUnicode変換フォーマットを表します。これは、Unicode文字セットを同等のバイナリ値にエンコードするための標準ファミリです。 UTFは、ユーザーが最小限のスペースで文字をエンコードする標準化された手段を持つように開発されました。 UTF-8とUTF 16は、エンコーディングの確立された標準の2つだけです。それらは、各文字をエンコードするために使用するバイト数だけが異なります。どちらも可変幅エンコーディングであるため、データをエンコードするために最大4バイトを使用できますが、UTF-8は1バイト(8ビット)のみを使用し、UTF-16は2バイト(16ビット)を使用します。これは、結果として生じるエンコードされたファイルのサイズに大きな影響を与えます。 ASCIIのみの文字を使用する場合、UTF-16でエンコードされたファイルは、UTF-8でエンコードされた同じファイルの約2倍の大きさになります。

<! - 1 - >

UTF-8の主な利点は、ASCIIと下位互換性があることです。 ASCII文字セットは固定幅で、1バイトのみを使用します。 UTF-8でASCII文字のみを使用するファイルをエンコードすると、結果のファイルはASCIIでエンコードされたファイルと同じになります。これは、各文字が2バイト長であるため、UTF-16を使用する場合は不可能です。ユニコード対応ではないレガシーソフトウェアは、ASCII文字のみを持っていてもUTF-16ファイルを開くことができません。

<! - 2 - >

UTF-8はバイト指向のフォーマットであるため、バイト指向のネットワークやファイルに問題はありません。一方、UTF-16はバイト指向ではなく、バイト指向のネットワークで動作するためにバイト順を確立する必要があります。 UTF-8は、次の破損していないバイトをまだ解読できるので、ファイルまたはストリームの一部を破損させるエラーから回復する方が優れています。 UTF-16は、いくつかのバイトが破損しているにもかかわらず全く同じことを行いますが、いくつかのバイトが失われたときに問題があります。失われたバイトは、次のバイトの組み合わせを混在させる可能性があり、最終結果が文字化けします。

<! - 3 - >概要:

1。 UTF-8とUTF-16はどちらも文字のエンコードに使用されます。

2 UTF-8は文字のエンコードに最低限のバイトを使用し、UTF-16は2つの

3を使用します。 UTF-8でエンコードされたファイルは、UTF-16でエンコードされたファイル

4よりも小さくなる傾向があります。 UTF-8はASCIIと互換性がありますが、UTF-16はASCII

5と互換性がありません。 UTF-8はバイト指向であり、UTF-16は

ではありません。 UTF-8は、UTF-16と比較してエラーからの回復が優れています。