目次:
1 Unicode の背後にある考え方
2 Unicode の基本概念
2.1 文字とコードポイント
2.2 Unicode プレーン
2.3 コード要素
2.4 サロゲートペア
2.5 文字の結合
3インチJavaScript Unicode
3.1 エスケープシーケンス
3.2 文字列の比較
3.3 文字列の長さ
3.4 文字の配置
3.5 正規のマッチング
4 結論
1. Unicode の背後にある考え方
まず、最も基本的な質問をしてください。この記事を読んで理解しましたか?答えは簡単です。なぜなら、これらの単語の意味と、それらが構成されている単語を理解しているからです。
それでは、これらの言葉の意味をどう理解しますか?答えも簡単です。なぜなら、あなた (読者) と私 (作者) は、これらのグラフィック (画面上に表示される) と漢字 (つまり、意味) との関係について同じ理解を持っているからです。
コンピューターの場合も、この原理は似ていますが、1 つ違いがあります。コンピューターはこれらの単語 (文字) の意味を理解せず、単に特定のビットのシーケンスとして理解するだけです。
シナリオを想像してみましょう: コンピューター ユーザー 1 がコンピューター ユーザー 2 に「こんにちは」というメッセージを送信します。
コンピューターはこれらの文字の意味を知りません。したがって、コンピューター User1 はメッセージ「hello」を一連の数字 0x68 0x65 0x6C 0x6C 0x6F に変換します。各文字は数字に対応します。h は 0x68、e は 0x65 などに対応します。
次に、これらの番号をコンピューター User2 に送信します。
コンピューター User2 が数値シーケンス 0x68 0x65 0x6C 0x6C 0x6F を受信すると、同じ文字と数字のセットを使用してメッセージの内容を再構築し、「こんにちは」を正しく表示できます。
文字と数字の対応に関する異なるコンピューター間の合意は、Unicode 標準化の結果です。
Unicode によれば、h は LATIN SMALL LETTER H という名前の抽象文字です。この抽象文字は、U+0068 というラベルの付いたコード ポイントである数値 0x68 に対応します。これらの概念については、次の章で説明します。
Unicode の役割は、抽象文字リスト (文字セット) を提供し、各文字に一意の識別コード ポイント (エンコードされた文字セット) を割り当てることです。
2. Unicode の基本概念
www.unicode.org の Web サイトに記載:
Unicode は各文字に独自の番号を割り当てます
プラットフォームに関係なく
プログラムに関係なく
言語に関係なく
Unicode はユニバーサル文字です世界中のほとんどの書記体系の文字セットを定義し、各文字に一意の番号 (コード ポイント) を割り当てるセット。
Unicode には、ほとんどの現代言語、句読点、発音区別記号 (ウムラウト)、数学記号、技術記号、矢印、絵文字などが含まれています。
Unicode 1.0 の最初のバージョンは 1991 年 10 月にリリースされ、7161 文字が含まれていました。最新バージョン 9.0 (2016 年 6 月リリース) では、128172 文字のエンコードが提供されます。
Unicode の多用途性とオープン性により、過去に存在した問題が解決されます。ベンダーは異なる文字セットとエンコード ルールを実装しているため、対処が困難です。
すべての文字セットとエンコード規則をサポートするアプリケーションの作成は非常に複雑です。言うまでもなく、選択したエンコーディングは必要なすべての言語をサポートしているわけではありません。
Unicode が難しいと思うなら、Unicode なしでプログラミングすることがどれだけ難しいかを考えてみてください。
ファイルの内容を読み取るために必要な文字セットとエンコード ルールをランダムに選択したときのことを今でも覚えています。すべては性格次第です!
2.1 文字とコードポイント
抽象文字 (つまり、テキスト文字) は、テキスト データを編成、管理、または表現するために使用される情報単位です。
Unicode の文字は抽象的な概念です。各抽象文字には、LATIN SMALL LETTER A などの対応する名前があります。この抽象文字のグラフィック表現 (グリフ) は、a です。 (翻訳者注: グリフはイメージ文字です)
コードポイントは、抽象文字
に割り当てられた番号を指します。コードポイントはU+
コードポイントの値の範囲は U+0000 から U+10FFFF です。
コードポイントは単純な数値であることに注意してください。 Unicode について考えるときは、このことに留意してください。
コードポイントは配列要素の添字のようなものです。
Unicode の魔法は、コード ポイントを抽象文字に関連付けることです。たとえば、U+0041 に対応する抽象文字の名前は LATIN CAPITAL LETTER A (A として表示)、U+2603 に対応する抽象文字の名前は SNOWMAN (☃ として表示) です
すべてのコード ポイントに対応する文字が存在するわけではないことに注意してください。抽象化された文字。使用可能なコード ポイントは 114112 個ありますが、割り当てられる抽象文字は 128237 個のみです。
2.2 Unicode プレーン
プレーンは、U+n0000 から U+nFFFF までの範囲を指し、これは 65536 (1000016) 個の連続した Unicode コードポイントです。n の値の範囲は 016 から 1016 です。
これらのプレーンは、Unicode コード ポイントを 17 の等しいサイズのセットに分割します。
プレーン 0 には、U+0000 から U+FFFF までのコード ポイントが含まれます
プレーン 1 には、U+**1**0000 から U+** コードまでのコード ポイントが含まれます1**FFFF
...
のポイント プレーン 16 には、U+**10**0000 から U+**10**FFFF までのコード ポイントが含まれています
Basic Multilingual Plane
Plane 0 は特別で、Basic Multilingual Plane または略して BMP と呼ばれます。ほとんどの現代言語 (基本的なラテン語、キリル文字、ギリシャ語など) の文字と多数の記号が含まれています。
前述したように、基本多言語プレーンのコード ポイント値の範囲は U+0000 から U+FFFF で、最大 4 桁の 16 進数を含めることができます。
ほとんどの場合、開発者は BMP で文字を扱います。ほとんどの場合、必要な文字が含まれています。
BMP の一部の文字:
e はコード ポイント U+0065 に対応します 抽象文字名: LATIN SMALL LETTER E
|コード ポイント U+007C に対応します 抽象文字名: VERTICAL BAR
■コード ポイント U+ に対応します25A0 抽象文字名:BLACK SQUARE
☂対応コードポイント U+2602 抽象文字名:UMBRELLA
Starlight Plane
BMP以降の16個のプレーン(プレーン1、プレーン2、...、プレーン16)はアストラルプレーンと呼ばれますまたは補助フラット。
アストラル界のコードポイントはアストラルコードポイントと呼ばれます。これらのコード ポイントの範囲は U+10000 から U+10FFFF です。
Starlight コード ポイントには 5 桁または 6 桁の 16 進数が含まれる場合があります: U+dddddd または U+dddddd。
アストラル界のキャラクターをいくつか見てみましょう: