Punycode (ピュニコード) とは?C#で日本語ドメインを扱う時に必須なアルゴリズムを説明

punycode

Punycode って知っていますか?

日本語ドメインを扱う時のPunycode (ピュニコード) の話です。

スポンサーリンク
スポンサーリンク

Punycode (ピュニコード) とは

Punycode (ピュニコード) とは、日本語のドメインをAsciiに変換した文字列です。

日本語ドメインがSEO上有利になるとの憶測からよく使われるようになり、Punycodeもよく聞くようになりました。

Punycodeは、国際化ドメイン名で利用される、文字列変換用のアルゴリズムで、RFC3492(http://tools.ietf.org/html/rfc3492)として標準化されています。

Punycodeでは、Unicodeで書かれた国際化ドメイン名の文字列をASCII文字に変換します。

これにより、従来のDNSの仕組みで国際化ドメイン名を運用することが可能となっています。

Punycodeで変換された国際化ドメイン名には、識別子として「xn--」という接頭辞が付きます。

Punycode (ピュニコード) は日本語ドメインを使用するときに必要で、

xn-- (エックスエヌハイフンハイフン)

から始まる文字列になります。

ちなみに、Chrome, Firefox, IE等のWebブラウザのURL入力エリアでは、日本語ドメインでもPunycodeでも全く同一に扱われるようです。

正確には、日本語で入力されて時には、ブラウザが内部でPunycodeに変換して扱っているのだと思われます。

Punycode のアルゴリズム

Punycodeはエンコード、デコード可能な可逆アルゴリズムです。

日本語ドメイン名をPunycodeに変換する時の簡単な流れは以下の通りです。

  1. 変換したい文字列の中から、英数字を先に抜き出す
  2. 英数字以外の文字列を、「Unicode (ユニコード) 」に変換する
  3. 変換した文字を、文字コード順に並べ変える
  4. 前の文字との文字コードの差分・元の文字列での文字位置を数値化する
  5. 数値化された文字データを、英数字で表せるように変換する
  6. 「国際化ドメイン名である」ということを示す文字列 (xn--) を先頭につける

以下の説明が分かりやすいです。

http://www.xn--eckwd4c7cy36u3zowmk0qcl32k.com/punycode.html

C#でPunycodeに変換

C#では、Punycodeの変換はIdnMappingクラスを使うことにより、とても簡単に行えます。

IdnMapping.GetAsciiでPunycodeへの変換、IdnMapping.GetUnicodeで逆変換が可能です。

以下にサンプルを示します。

実行結果は以下の通りです。

とても簡単に扱えますね。

JavaやPHP、JavaScriptでも同種の変換が可能です。

日本語ドメインのまとめ

日本語ドメインは、今後も広く使われることが推測されるので、Punycodeを見かけることも多いと思います。

そういう中で、Punycodeの知識を持っておくことは役に立つでしょう。

Punycodeが必要になることがあるので、変換する手立ては知っているに越したことはありません。

ところで、日本語ドメインはSEO上、有利との話がありますが実際のところはどうなんでしょうね。

私自身は少し懐疑的ではあります。

一方、中古ドメインなど実績のあるドメインは、ひょっとしたら宝の山みたいなものはあるかもしれません。

お名前.com では、日本語ドメインのみならず、中古ドメイン、プレミアドメインも扱っています。

↓ドメインを取得するならお名前.com

この記事、お役に立ちましたらシェアをお願いします。

コメント

  1. muzico425 より:

    こんばんは  質問がありますので     例えば:http://プロミス即日融資puromisu.com/   このURL以上のコードで変換した後、xn--http://puromisu-wi5nnquezk0624dh78c1z2hjeza.com/を現れた。正しくURLですね。  いったい どうしよう  お教えてお願い