Unicodeとは
Unicodeは、世界の大半の文字体系でテキストを一貫してエンコード、表現、処理するための汎用コンピューティング標準です。ドメイン業界では、中国語、アラビア語、キリル文字などの非ラテン文字を含む国際化ドメイン名(IDN)を可能にします。すべての言語の各文字に固有のコードポイントを割り当て、システム間で同じ表現を保証します。ドメイン名におけるUnicode
IDNの対応
Unicodeにより次のようなドメインを使えます。
- 例え.jp(日本語)
- مثال.مصر(アラビア語)
- пример.рф(ロシア語キリル文字)
- 例子.中国(中国語)
Punycodeへの変換
DNSはASCIIを使うため、UnicodeドメインはPunycodeに変換されます。
Unicode: münchen.de
Punycode: xn--mnchen-3ya.de
Unicode: 北京.中国
Punycode: xn--1lq90i.xn--fiqs8s
Unicodeコードポイント
構造
Format: U+XXXX (hexadecimal)
Examples:
A = U+0041 (Latin A)
а = U+0430 (Cyrillic a)
中 = U+4E2D (Chinese character)
文字ブロック
| ブロック | 範囲 | 文字体系 |
|---|---|---|
| Basic Latin | U+0000-007F | English/ASCII |
| Cyrillic | U+0400-04FF | Russian, etc. |
| Arabic | U+0600-06FF | Arabic |
| CJK | U+4E00-9FFF | Chinese/Japanese/Korean |
セキュリティ上の懸念
ホモグリフ攻撃
異なる文字体系の似た文字を使います。
Latin 'a' (U+0061) vs Cyrillic 'а' (U+0430)
Latin 'o' (U+006F) vs Cyrillic 'о' (U+043E)
Attack: аpple.com (Cyrillic 'а') looks like apple.com
ブラウザーの保護
不審な文字体系混在ドメインでは、ブラウザーがPunycodeを表示する場合があります。
Unicodeの正規化
同じ文字を表す方法が異なる場合があります。
é = U+00E9 (precomposed)
é = U+0065 + U+0301 (decomposed: e + combining accent)
Normalization forms: NFC, NFD, NFKC, NFKD
Unicodeは世界のインターネットへのアクセスを支える基盤です。世界中の利用者が母語の文字体系と自然な言語でドメインを登録し、アクセスできるようにします。