| エイリアス | UCS、ユニコード |
|---|---|
| 言語 | 国際的 |
| 標準 | 国際標準化機構(ISO) 10646 |
| エンコード形式 | UTF-8、UTF-16、GB 18030 あまり一般的ではない:UTF-32、BOCU、SCSU、UTF-7 |
| 先行 | ISO/IEC 8859、ISO/IEC 2022、その他各種 |
ユニバーサルコード化文字セット( UCS、Unicode ) は、国際標準ISO / IEC 10646、情報技術 - ユニバーサル コード化文字セット (UCS) (およびその標準の修正)で定義されている標準文字セットであり、多くの文字エンコーディングの基礎となっており、以前は表現されていなかった入力システムの文字が追加されるにつれて改善されています。
UCS には、使用/割り当て可能なコード ポイントが 110 万以上ありますが、 2000 年以前に一般的に使用されていたのは、最初の 65,536 のBasic Multilingual Plane (BMP) のみでした。この状況は、中華人民共和国(PRC) が 2006 年に、その管轄区域で販売されるすべてのソフトウェアがGB 18030 をサポートする必要があるという判決を下したことで変わり始めました。これにより、PRC での販売を目的としたソフトウェアは、BMP を超える必要がありました。[説明が必要]
システムは、BMP であっても、文字に割り当てられていないコード ポイントを意図的に多く残しています。これは、将来の拡張を可能にするため、または他のエンコード形式との競合を最小限に抑えるためです。
UCS のオリジナル版では、 BMP 外のコード ポイントを表すために、UCS-2 の拡張であるUTF-16 を定義しました。BMP の S (特殊) ゾーンのコード ポイントの範囲は、文字に割り当てられていません。UCS-2 では、これらのコード ポイントにコード値を使用することは許可されていませんが、UTF-16 では、ペアでの使用が許可されています。Unicode でも UTF-16 が採用されていますが、Unicode の用語では、上位半分のゾーン要素は「上位サロゲート」になり、下位半分のゾーン要素は「下位サロゲート」になります。[説明が必要]
もう 1 つのエンコーディングであるUTF-32 (旧称 UCS-4) は、コード空間の 1 つの文字をエンコードするために 4 バイト (合計 32 ビット) を使用します。UTF-32 では、API およびソフトウェア アプリケーションのすべてのコード ポイント (2024 年現在) のバイナリ表現が可能になります。
歴史
国際標準化機構(ISO) は 1989 年に汎用文字セットの作成に着手し、1990 年に ISO 10646 の草案を公開しました。Hugh McGregor Ross は、その主要な設計者の 1 人でした。
この作業は、1987 年以来ゼロックス社とApple 社によって開発されてきたUnicode標準の開発とは独立して行われました。
オリジナルの ISO 10646 草案は現在の標準とは大きく異なっており、次のように定義されています。
- 128グループの
- 256機の
- 256行の
- 256 セル、
合計で 2,147,483,648 文字と表示されますが、実際には、グループ、プレーン、行、セルを指定する4 つのバイトのいずれにもC0 および C1 制御コードのバイト値 ( 16 進表記で 0x00 から 0x1F および 0x80 から 0x9F ) を含めることがポリシーで禁止されているため、標準では 679,477,248 文字しかコード化できませんでした。たとえば、ラテン大文字の A は、グループ 0x20、プレーン 0x20、行 0x20、セル 0x41 に配置されていました。
この原始的な ISO/IEC 10646 標準の文字は、次の 3 つの方法のいずれかでコード化できます。
- UCS-4、文字ごとに 4 バイト、すべての文字の簡単なエンコードを可能にします。
- UCS-2、文字ごとに 2 バイト。最初のプレーン 0x20 (基本多言語プレーン) のエンコードを直接有効にします。これには最初の 36,864 個のコード ポイントが含まれます。他のプレーンとグループは、ISO/IEC 2022エスケープ シーケンスを使用して切り替えることができます。
- UTF-1は、すべての文字をさまざまな長さのバイト シーケンス (1 ~ 5 バイト、それぞれに制御コードは含まれません) でエンコードします。
そのため、1990 年には、ユニバーサル文字セットのための 2 つの取り組みが存在していました。1 つは、文字ごとに 16 ビット (65,536 文字可能) を使用するUnicode 、もう 1 つは ISO/IEC 10646 です。ソフトウェア企業は、ISO 標準の複雑さとサイズ要件を受け入れることを拒否し、いくつかの ISO 国家機関に反対票を投じるよう説得することができました。 [要出典] ISO 関係者は、現状のままでは標準をサポートし続けることができないと認識し、Unicode との標準の統合について交渉しました。2 つの変更が行われました。文字の制限 (制御コード値の禁止) が解除され、コード ポイントの割り当てが可能になったこと、もう 1 つは、基本多言語面のレパートリーが Unicode のレパートリーと同期されたことです。
一方、時が経つにつれ、Unicode 規格自体の状況も変化し、65,536 文字では不十分であることが明らかになり、バージョン 2.0 以降の規格では、UTF-16サロゲート メカニズムによって17 プレーンの 1,112,064 コード ポイントのエンコードがサポートされるようになりました。このため、ISO/IEC 10646 は、UTF-16 でエンコードできる文字数までに制限され、それ以上の文字数には制限されませんでした。つまり、6 億 7,900 万文字以上ではなく、100 万文字強でした。ISO/IEC 10646 の UCS-4 エンコードは、UTF-16 の範囲に制限され、UTF-32という名前で Unicode 規格に組み込まれましたが、プログラムの内部データ以外ではほとんど使用されていません。
Plan 9オペレーティングシステムの設計者であるRob PikeとKen Thompsonは、7ビットASCIIとの下位互換性も備えた、高速でよく設計された新しい混合幅エンコーディングを考案しました。これはUTF-8と呼ばれるようになり、[1]現在最も人気のあるUCSエンコーディングとなっています。
Unicodeとの違い
ISO/IEC 10646 と Unicode は同一のレパートリーと番号を持ちます。つまり、同じ番号の同じ文字が両方の標準に存在しますが、Unicode の方が新しいバージョンをリリースし、新しい文字を追加する頻度が高いです。Unicode には ISO/IEC 10646 の範囲外の規則と仕様があります。ISO/IEC 10646 は単純な文字マップであり、ISO/IEC 8859などの以前の標準を拡張したものです。対照的に、Unicode は照合、フォームの正規化、およびアラビア語やヘブライ語などの右から左に書くスクリプトの双方向アルゴリズムの規則を追加しています。プラットフォーム間の相互運用性、特に双方向スクリプトが使用される場合の相互運用性については、ISO/IEC 10646 をサポートするだけでは不十分であり、Unicode を実装する必要があります。
これらのルールとアルゴリズムをサポートするために、Unicode はセット内の各文字に、文字のデフォルトの双方向クラスを決定するプロパティや、文字が他の文字とどのように結合するかを決定するプロパティなど、多くのプロパティを追加します。文字がヨーロッパの数字「8」や俗分数「¼」などの数値を表す場合、その数値も文字のプロパティとして追加されます。Unicode は、これらのプロパティによって、複数の言語が混在する相互運用可能なテキスト処理をサポートすることを目的としています。
一部のアプリケーションは ISO/IEC 10646 文字をサポートしていますが、Unicode を完全にはサポートしていません。そのようなアプリケーションの 1 つであるXterm は、文字とグリフが 1 対 1 でマッピングされ[説明が必要]、方向性が 1 つであるすべての ISO/IEC 10646 文字を適切に表示できます。単純な重ね打ち方式で一部の結合記号を処理できますが、ヘブライ語 (双方向)、デーヴァナーガリー語(1 つの文字と複数のグリフ)、またはアラビア語 (両方の機能) を表示することはできません。ほとんどのGUIアプリケーションは、そのようなスクリプトを処理する標準の OS テキスト描画ルーチンを使用しますが、アプリケーション自体は常に正しく処理できるとは限りません。
ユニバーサルコード化文字セットの引用
ISO/IEC 10646 は、ISO/IEC 10646 規格群の一般的な非公式な引用であり、ほとんどの文章で受け入れられます。また、これは別の規格ですが、 UCS について説明する際には、非公式にUnicodeという用語が頻繁に使用されます。ただし、出版物としての UCS への規範的な参照では、 ISO/IEC 10646:{year} の形式で版の年を引用する必要があります(例: ISO/IEC 10646:2014)。
Unicodeとの関係
1991 年以来、Unicode コンソーシアムとISO / IEC は、Unicode 標準(「Unicode」) と ISO/IEC 10646 を共同で開発してきました。Unicode バージョン 2.0 のレパートリー、文字名、コード ポイントは、最初の 7 つの公開された修正を含む ISO/IEC 10646-1:1993 のものと完全に一致しています。2000 年 2 月に Unicode 3.0 が公開された後、対応する新規および更新された文字が ISO/IEC 10646-1:2000 を介して UCS に導入されました。2003 年には、ISO/IEC 10646 のパート 1 と 2 が 1 つのパートに統合され、それ以来、Unicode 標準とほぼ同期して、標準に文字を追加する修正が数多く行われてきました。
- ISO/IEC 10646-1:1993 =ユニコード 1.1
- ISO/IEC 10646-1:1993 および修正 5 から 7 = Unicode 2.0
- ISO/IEC 10646-1:1993 および修正 5 から 7 =修正 18 に含まれるユーロ記号とオブジェクト置換文字を除くUnicode 2.1
- ISO/IEC 10646-1:2000 =ユニコード 3.0
- ISO/IEC 10646-1:2000 および ISO/IEC 10646-2:2001 = Unicode 3.1
- ISO/IEC 10646-1:2000 および修正 1 と ISO/IEC 10646-2:2001 = Unicode 3.2
- ISO/IEC 10646:2003 =ユニコード 4.0
- ISO/IEC 10646:2003 および修正 1 = Unicode 4.1
- ISO/IEC 10646:2003 および修正 1 から 2 =修正 3 に含まれるデーヴァナーガリー文字 GGA、JJA、DDDA、BBAを除くUnicode 5.0
- ISO/IEC 10646:2003 および修正 1 から 4 = Unicode 5.1
- ISO/IEC 10646:2003 および修正 1 から 6 = Unicode 5.2
- ISO/IEC 10646:2003 および修正 1 から 8 = ISO/IEC 10646:2011 =インド ルピー記号を除くUnicode 6.0
- ISO/IEC 10646:2012 =ユニコード 6.1
- ISO/IEC 10646:2012 = Unicode 6.2 (トルコリラ記号を除く。修正1に含まれる)
- ISO/IEC 10646:2012 = Unicode 6.3(修正 1 に含まれるトルコ リラ記号と、修正 2 に含まれる 5 つの双方向制御文字(アラビア文字マーク、左から右への分離文字、右から左への分離文字、最初の強い分離文字、ポップ方向の分離文字)を除く)
- ISO/IEC 10646:2012 および修正 1 と 2 =ルーブル記号を除くUnicode 7.0
- ISO/IEC 10646:2014 および修正 1 =ラリ文字、9 つの CJK 統合表意文字、および 41 の絵文字を除くUnicode 8.0
- ISO/IEC 10646:2014 および修正 1 および 2 = Adlam、Newa、日本のテレビ記号、および 74 個の絵文字と記号を除くUnicode 9.0
- ISO/IEC 10646:2017 = Unicode 10.0( 285 の変体仮名文字、3 つのザナバザール方陣文字、および 56 の絵文字記号を除く)
- ISO/IEC 10646:2017 および修正 1 = 46 個のムタヴルリ語大文字、5 個の CJK 統合表意文字、および 66 個の絵文字を除くUnicode 11.0
- ISO/IEC 10646:2017 および修正 1 と 2 = 62 の追加文字を除くUnicode 12.0
- ISO/IEC 10646:2020 =ユニコード 13.0
- ISO/IEC 10646:2020 および修正 1 = Unicode 15.0
- ISO/IEC 10646:2020 および修正 1 および 2 = Unicode 16.0
参照
関連規格:
- ISO/IEC 646 (位置 0 から 127 は ISO/IEC 10646 および Unicode と同じであり、数字 646 と 10646 は類似しています)
- ISO/IEC 2022 情報技術 - 文字コード構造と拡張技術
- ISO/IEC 6429 C0 および C1 制御コード
- ISO/IEC 8859 (UCS および Unicode の位置 0 から 255 は ISO/IEC 8859-1 (別名 ISO Latin 1) と同じです)
- ISO/IEC 14651 情報技術 – 国際的な文字列の順序付けと比較
- ISO 15924 文字名を表すコード(各文字はいずれかの文字に関連付けられています)
- Unicode エンコーディングの比較
- XML および HTML 文字実体参照のリスト
- Unicodeフォント一覧
- ユニバーサル文字セット文字
- ISO/IEC JTC 1/SC 2
参考文献
- ^ Pike, Rob (2003-04-03). 「UTF-8 の歴史」。2016-05-23 時点のオリジナルよりアーカイブ。
外部リンク
- 公開されている標準規格(ISO) - ISO/IEC 10646:2020/Amd. 1:2023(E) のコピーが含まれています
- ISO/IEC JTC1/SC2/WG2、ISO 10646を担当するワーキンググループ
- UTF-8 と Unicode に関するよくある質問
- SIL のフリーウェアフォント、エディター、ドキュメント
- Web ブラウザーとフォントの機能をテストする、シンプルだが使いやすい UTF-8 の例です。
- 1989年10月からのADA 9xの文字セットの問題。合併前のオリジナルのDIS ISO-10646について詳細に説明しています。
