エンディアン
コンピュータ
ドイツ語
バイトオーダーマーク
メインページ
ユーザーエージェント
協定世界時
単調関数
国際化ドメイン名
文字
文字コード
文字学
有限オートマトン
符号化方式
縦書きと横書き
閾値
ASCII
CJK統合漢字
Domain Name System
GB 18030
ISO/IEC 10646
Punycode
UTF-16
UTF-32
UTF-8
UTF-EBCDIC
Unicode
Unicode#.E3.82.A8.E3.83.B3.E3.82.B3.E3.83.BC.E3.83.87.E3.82.A3.E3.83.B3.E3.82.B0.EF.BC.88.E7.AC.A6.E5.8F.B7.E5.8C.96.E6.96.B9.E5.BC.8F.EF.BC.89
Unicode文字のマッピング
コンピュータ
ドイツ語
バイトオーダーマーク
メインページ
ユーザーエージェント
協定世界時
単調関数
国際化ドメイン名
文字
文字コード
文字学
有限オートマトン
符号化方式
縦書きと横書き
閾値
ASCII
CJK統合漢字
Domain Name System
GB 18030
ISO/IEC 10646
Punycode
UTF-16
UTF-32
UTF-8
UTF-EBCDIC
Unicode
Unicode#.E3.82.A8.E3.83.B3.E3.82.B3.E3.83.BC.E3.83.87.E3.82.A3.E3.83.B3.E3.82.B0.EF.BC.88.E7.AC.A6.E5.8F.B7.E5.8C.96.E6.96.B9.E5.BC.8F.EF.BC.89
Unicode文字のマッピング
Unicode
符号化方式
UTF-7
UTF-8
CESU-8
UTF-16/UCS-2
UTF-32/UCS-4
UTF-EBCDIC
SCSU
Punycode (IDN/IDNA)
GB 18030
その他
UCS
マッピング
書字方向
BOM
漢字統合
UnicodeとHTML
Unicodeと電子メール
Unicodeフォント
Punycode(ピュニコード)とは、国際化ドメイン名で使われる文字符号化方式で、RFC 3492で定義されている。Unicodeで書かれた文字列をDNS内の制限された文字コード空間でも使えるようにするための方式で、ユーザーエージェントの実装に依存する。
ドメイン名としてPunycodeを使用する際は、ドット(.)で区切られたドメイン名の階層レベルごとにプレフィックスとして"xn--"を使用し、エンコードされた文字列を続ける。大文字と小文字は区別されない。例えば「ドメイン名例.jp」の場合は"xn--eckwd4c7cu47r2wf.jp"、「ウィキペディア.ドメイン名例.jp」の場合は"XN--CCKBAK0BYL6E.XN--ECKWD4C7CU47R2WF.JP"、「例え.テスト」の場合は"xn--r8jz45g.xn--zckzah"のようになる。
目次
1 エンコーディング手順
1.1 ASCII文字の分離
1.2 非ASCII文字の挿入をコード番号としてエンコード
1.3 コード番号をASCII文字列として再変換
2 関連項目
3 外部サイト
編集 エンコーディング手順
この節ではPunycodeのエンコーディング手順を、"bücher"(ドイツ語で「本」)がどのようにして"bcher-kva"と変換されるかを例にとって説明する。
編集 ASCII文字の分離
最初に入力文字列中にあるすべての基本文字 (ASCII) を、基本文字以外の文字は飛ばしてそのままコピーする(例:"bücher" → "bcher"、"日本Japan"→"Japan")。基本文字以外の文字がある場合は、最後に区切り文字(ハイフン)を追加する(例:"bücher" → "bcher-")。
編集 非ASCII文字の挿入をコード番号としてエンコード
次のエンコーディング手順を理解するために、先にデコーダの動作を理解する必要がある。デコーダは2つの状態変数 i と n を持つオートマトンである。 i は文字列への挿入位置のインデックスで、その範囲は0(これは文字列の先頭への挿入を表す)から現在の文字列の長さ(文字列の末尾への挿入を表す)である。
i は0から始まり、n は128(非ASCII文字の最初のコードポイント)から始まる。状態遷移は単調であり、遷移すると i が増加する。ただし i がすでに最大値の場合は n が増加し、i は0に戻る。各状態遷移の際、nで表されるコードポイントを文字列に挿入するか、挿入をスキップする。
エンコーダによって生成されるコード番号は、デコーダが文字を挿入する前に、スキップすべき挿入可能位置がいくつあるかを数値化する。"ü"のコードポイントは252である。よって ü の字を文字列の1文字目の後ろに挿入するには、"bcher"の中に6か所ある挿入ポイントに、üより前にある124の非ASCII文字が挿入されるのをスキップし、さらに0文字目(つまり文字列の先頭)にüが挿入されるのをスキップする必要がある。したがって、デコーダには必要な1文字を挿入するために、(6 × 124) + 1 = 745 の挿入可能位置をスキップするよう伝える必要がある。
編集 コード番号をASCII文字列として再変換
Punycodeはコード番号を表すために一般化可変長整数を使用する。例としてコード番号745を「kva」と表す方法を示す。
リトルエンディアンを用いた数値系を使うことにより、区切り記号を使わずに可変長の整数を表現することができる。閾値より小さい桁がその数字の終わりであり、有効桁数を表すからだ。閾値は効率を高めるため、数値中での位置と前回の挿入位置に依存させる。相応して、各桁の重み付けも変化する(通常の数値では、例えば右端から3番目の桁の重みは100である)。
Punycodeの場合は36種の文字を使用する。アルファベット(大文字小文字を区別しない)の'a'から'z'が0から25を表し、数字の'0'から'9'が26から35を表す。したがって「kva」は「10 21 0」を表す。3桁の数値の最初の桁はbから9までの範囲の値をとるため、2桁目の重みは36ではなく35となる。「a」は数値の終わりを表している。したがって「kva」は 10 + 35 × 21 = 745 を表しているのである。
"bücher"に2つ目の特殊文字を挿入しようとすると、最初の挿入可能位置は"büücher"で、コード"bcher-kvaa"となる。次の挿入可能位置は"bücüher"で"bcher-kvab"となる。同様に続き"bücherü"は"bcher-kvae"となり、次に来るのは"ýbücher"で"bcher-kvaf"である。
編集 関連項目
Nameprep
編集 外部サイト
RFC 3492
Punycode encoding and decoding
Punycode converter
Online Punycode/IDN Decoder/Encoder
GNU IDN Library—Libidn
ICU IDNA Demonstration An online demonstration of how ICU performs IDN operations
Punycode for Domains Convert Unicode to Punycode
List of TLDs considered by the Mozilla developers to have an effective anti-spoofing policy for name registration
IDN and Punycode in IE7
Punycode converter for Korean
この「Punycode」はコンピュータに関連した書きかけ項目です。この記事を加筆して下さる協力者を求めています(PJ コンピュータ / Portal:コンピュータ)。
この「Punycode」は、文字や文字学に関連した書きかけの項目です。加筆・訂正等して下さる協力者を求めています(P:文字)。
Domain Registration - web hosting and search engine registration
Domain Name Registration - register your domain name online,and get the name you want ... Our punycode aware bulk search tool makes it easy to search and register your list of ...
1 Vamos a la pgina de VeriSign e introducimos coneeyconacento para obtener la traduccin a Punycode 2 Que resulta ser xn coneeyconacento 1qb Pues bien esta traduccin literal es la que tendremos que utilizar para configurar la cuenta FTP y dar de alta
http://www.xn--coneeyconacento-1qb.net/conceptos.htm
punycode (punycode) on Twitter
punycode is using Twitter. Twitter is a free service that lets you keep in touch with people through the exchange of quick, frequent answers to ...
Punycode: Information from Answers.com
The Punycode is an ASCII representation of the Unicode characters and symbols. ... In computing, Punycode is an instance of a general encoding syntax ...
IDN Conversion Tool: VeriSign
Punycode. To convert an IDN or nameserver from native characters to ... Click on "convert" and the results page will show the Punycode encoding for that domain. ...
Conversor - Punycode
También es muy práctico para gestionar dominios con caracteres IDN en las empresas de hosting que no los permiten, ya que si soportan la notación Punycode. ...
Punycode Converter - encode/decode IDNs - bulk - PunyCoder.com
Online bulk conversion between IDNs/unicode and their respective punycode versions
RFC 3492
Abstract Punycode is a simple and efficient transfer encoding syntax ... Punycode is an instance of a more general algorithm called Bootstring, which ...
日本語JPドメイン名のPunycode変換・逆変換 - 日本語.jp
ここでは、日本語JPドメイン名のPunycode表記への変換



