コンテンツにスキップ

Punycode

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Okumurya (会話 | 投稿記録) による 2008年5月25日 (日) 01:00個人設定で未設定ならUTC)時点の版 (コード番号を挿入して非ASCII文字をエンコード)であり、現在の版とは大きく異なる場合があります。

Punycode(ピュニコード)とは、国際化ドメイン名で使われる文字符号化方式で、RFC 3492で定義されている。Unicodeで書かれた文字列をDNS内の制限された文字コード空間でも使えるようにするための方式で、ユーザーエージェントの実装に依存する。

ドメイン名としてPunycodeを使用する際は、ドット(.)で区切られたドメイン名の階層レベルごとにプレフィックスとして"xn--"を使用し、エンコードされた文字列を続ける。大文字と小文字は区別されない。例えば「ドメイン名例.jp」の場合は"xn--eckwd4c7cu47r2wf.jp"、「ウィキペディア.ドメイン名例.jp」の場合は"XN--CCKBAK0BYL6E.XN--ECKWD4C7CU47R2WF.JP"、「例え.テスト」の場合は"xn--r8jz45g.xn--zckzah"のようになる。

エンコーディング手順

ASCII文字の分離

最初に入力文字列中にあるすべての基本文字(ASCII)をそのままコピーします。基本文字以外の文字はスキップします(例:「日本Japan」→「Japan」)。基本文字以外の文字がある場合は、最後に区切り文字(ハイフン)を追加します(例:「日本Japan」→「Japan-」)。

コード番号を挿入して非ASCII文字をエンコード

エンコーディング手順の次の部分を理解するために、先にデコーダの動作を理解する必要があります。デコーダは2つの状態変数inを持つstate machineです。iはインデックスです。その範囲は0(文字列の先頭)から現在の文字列の長さ(文字列の最後)です。


コード番号をASCII文字列として再変換

関連項目

外部サイト