Unicode 文字エンコーディングの説明
RUNSTUDIO/イメージバンク/ゲッティイメージズ
コンピューターが人間が理解できるテキストと数字を保存できるようにするには、変換するコードが必要です。 文字 数字に。 Unicode 標準では、文字エンコーディングを使用してこのようなコードを定義しています。
文字エンコーディングが非常に重要な理由は、すべてのデバイスが同じ情報を表示できるようにするためです。カスタム文字エンコーディング スキームは、あるコンピューターでは見事に機能するかもしれませんが、同じテキストを別の人に送信すると問題が発生します。エンコーディングスキームも理解しない限り、あなたが何について話しているのかわかりません。
文字コード
すべての文字エンコーディングは、使用できるすべての文字に番号を割り当てます。今すぐ文字エンコーディングを作成できます。
たとえば、私は手紙と言うことができます あ a=14、1=33、#=123 などのように数字の 13 になります。
ここで、業界全体の標準が登場します。コンピューター業界全体が同じ文字エンコード方式を使用している場合、すべてのコンピューターで同じ文字を表示できます。
ユニコードとは?
ASCII (情報交換のための米国標準コード) 最初に普及したエンコーディング スキームになりました。ただし、128 文字の定義のみに制限されています。これは、最も一般的な英語の文字、数字、および句読点では問題ありませんが、それ以外の場合は少し制限されます。
当然のことながら、世界の他の国も同じ文字コード体系を望んでいます。ただし、少しの間、場所によっては、同じ ASCII コードに対して別の文字が表示される場合がありました。
最終的に、世界の他の地域が独自のエンコーディング スキームを作成し始め、状況が少し混乱し始めました。コーディング スキームの長さが異なるだけでなく、プログラムはどのエンコーディング スキームを使用する必要があるかを判断する必要がありました。
Unicode 標準が作成されたときに、新しい文字エンコード方式が必要であることが明らかになりました。 Unicode の目的は、さまざまなエンコード方式をすべて統一して、コンピューター間の混乱をできるだけ抑えることです。
最近では、Unicode 標準で 128,000 文字を超える値が定義されており、 ユニコード コンソーシアム .いくつかの文字エンコーディング形式があります。
- あ U+0041です
- a U+0061です
- 1 U+0031です
- # は U+0023
ノート: UTF は Unicode Transformation Unit を意味します。
コードポイント
コード ポイントは、Unicode 標準で文字に与えられる値です。 Unicode に準拠した値は 16 進数で表記され、接頭辞として U+ .
たとえば、前に見た文字をエンコードするには、次のようにします。
これらのコード ポイントは、プレーンと呼ばれる 17 の異なるセクションに分割され、0 ~ 16 の番号で識別されます。各プレーンには 65,536 のコード ポイントが保持されます。最初のプレーン 0 は、最も一般的に使用される文字を保持し、Basic Multilingual Plane (BMP) として知られています。
コード単位
エンコーディング スキームはコード ユニットで構成されており、文字がプレーン上のどこに配置されているかを示すインデックスを提供するために使用されます。
例として UTF-16 を考えてみましょう。各 16 ビット数値はコード単位です。コード単位は、コード ポイントに変換できます。たとえば、平音符記号 ♭ は U+1D160 のコード ポイントを持ち、Unicode 標準の 2 番目の平面 (補助 Ideographic 平面) に存在します。これは、16 ビット コード ユニット U+D834 と U+DD60 の組み合わせを使用してエンコードされます。
BMP の場合、コード ポイントとコード単位の値は同じです。これにより、多くのストレージ スペースを節約する UTF-16 のショートカットが可能になります。これらの文字を表すために必要なのは、16 ビットの数値を 1 つだけ使用することだけです。
Java はどのように Unicode を使用しますか?
ジャワ Unicode 標準がはるかに小さな文字セットに対して定義された値を持っていた頃に作成されました。当時、必要なすべての文字をエンコードするには 16 ビットで十分であると考えられていました。そのことを念頭に置いて、Java は UTF-16 を使用するように設計されました。 char データ型は、もともと 16 ビットの Unicode コード ポイントを表すために使用されていました。
Java SE v5.0 以降、char はコード単位を表します。コード単位の値はコード ポイントと同じであるため、Basic Multilingual Plane にある文字を表す場合にはほとんど違いはありません。ただし、他のプレーンのキャラクターには 2 つのキャラクターが必要であることを意味します。
覚えておくべき重要なことは、1 つの char データ型ですべての Unicode 文字を表すことはできなくなったことです。