Punycode

概要

Punycodeとは、国際化ドメイン名を既存のDNS運用できるようにするためにUnicode文字をアルファベット、数字、ハイフン(-)の組み合わせに変換する符号化方式の一つ。

ドメイン名IPアドレスの対応関係を管理するDNSDomain Name System)では仕様上、ドメイン名としてアルファベット(大文字と小文字の区別なし)、数字、ハイフンマイナス記号)のみを用いることができる。

そのままではドメイン名に様々な言語の文字を取り入れることができないため、一定の規則に従って仕様外の文字を英数字とハイフンの組み合わせに変換してDNS上で取り扱う「ACE」(ASCII Compatible Encoding)という手法が考案された。PunycodeはACEの方式の一つで、DNS上では「xn--」という識別子に続けて変換後の文字列を表記する。

変換工程では、まず元のドメイン名を英数字とそれ以外の文字列に分離する。英数字以外の文字はUnicodeコード番号に置き換え、英数字側のどこに挿入するかを表す位置情報と合わせて数値で表現する。得られた数値列を36進数(一桁を0~9、a~zの36文字で表す)表記に変換し、英数字側の末尾にハイフンで区切って連結する。

例えば、「punycode表記の例.jp」という日本語JPドメイン名を変換すると、「表記の例」の部分が「nf4gq06y9y2geie」という表現に変換され、Punycode識別子の「xn--」、英数字部分の「punycode」と連結されて「xn--punycode-nf4gq06y9y2geie.jp」という表記に変換される。

同じ要領でトップレベルドメインTLD)名も国際化することができる。例えば、「日本語TLD.日本」というドメイン名は、TLDの「日本」とセカンドレベルドメインの「日本語TLD」がそれぞれ変換され、「xn--tld-s08fl0dtz6h.xn--wgv71a」という表記になる。

Punycodeの仕様は2003年にIETFによりRFC 3492として標準化された。国際化ドメイン名の導入時、当初はACEとして識別子「bq--」から始まる「RACE」(Row-based ACE)という符号化方式が試験的に用いられていたが、標準としてPunycodeが正式採用されることになり、現在はPunycodeで運用されている。

(2023.5.2更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる