こんにちは。masm11 です。
国際化ドメイン名をご存知でしょうか? インゲージ.jp
みたいなやつのことですね。
しかし、時々、xn--eck2as8usb.jp
と表示されていることがあって、「これ、一体どこ??」
と思うことがあります。今回はこの文字列を元に戻す方法をご紹介します。
国際化ドメイン名とは
ドメイン名には日本語は使えません。 しかし、一部には「日本語を使いたいんじゃああ!!」という人もいて、 対応する必要がありました。 ですが、やっぱりドメイン名には日本語は使えないので、 英数字に変換して使うことにしたのです。
例えば、
インゲージ.jp
→ xn--eck2as8usb.jp
といった感じです。xn--
が付いていれば、国際化ドメイン名を変換したものです。
ブラウザなどでは自動で変換してアクセスしてくれて、便利に使えます。
ですが、時々 xn--eck2as8usb.jp
だけを見せられて、「これ何?」と判断する必要に迫られる場面もあります。
変換方法
国際化ドメイン名を英数字に変換するには、Punycode と呼ばれる変換方法を使っています。
Linux では、ライブラリとしては libidn、ツールとしては idn というコマンドが 存在します。
実際に使ってみましょう。
[~]$ echo 'インゲージ.jp' | idn xn--eck2as8usb.jp [~]$
このように変換してくれます。逆に変換したい時には、-u
を付けて、
[~]$ echo 'xn--eck2as8usb.jp' | idn -u インゲージ.jp [~]$
というように使います。また、
[~]$ echo 'xn--6wyu77cyid.xn--eck2as8usb.jp' | idn -u 開発部.インゲージ.jp [~]$
というように、サブドメインにも対応しています。
まとめ
変換された国際化ドメイン名を元に戻す方法をご紹介しました。 これで、国際化ドメイン名で困ることが一つ減りました。
ですが、国際化ドメイン名には他にも問題があります。
[~]$ echo 'インゲ−ジ.jp' | idn xn--t9gx68chbza60a.jp [~]$
変換すると上に挙げた例と結果が異なるのですが、何故でしょうか? 実は「−」が長音記号でなくハイフンなのです。
英数字なら見間違えることは滅多にないのですが(それでも l
と 1
は区別しづらいですが)、日本語や、もっと広く世界の言語を相手にすると、見間違えることが増えます。以前、Google.com の "G" の文字がよく似た別の文字の詐欺サイトがあったらしいですね。怖い怖い。
以上、国際化ドメイン名が嫌いな masm11 でした。