Punycodeとは
DNS(ドメイン名の仕組み)は、もともと英数字とハイフンしか扱えません。そこで日本語などを含むドメイン(国際化ドメイン名、IDN)は、Punycode という方式で英数字だけの文字列に変換し、先頭に xn-- を付けて登録・通信されています。ブラウザのアドレスバーに日本語で表示されていても、内部では xn-- 形式が使われています。
| 日本語ドメイン | Punycode |
|---|---|
| 日本語.jp | xn--wgv71a119e.jp |
| お名前.com | xn--t8jx73hngb.com |
| 例え.テスト | xn--r8jz45g.xn--zckzah |
ドメインは . で区切られたラベルごとに変換され、英数字だけのラベル(jp、com など)はそのまま残ります。
xn-- 形式が必要になる場面
- DNS レコード(A / CNAME / TXT など)の設定
- SSL 証明書の申請(CSR のコモンネーム)
- Web サーバー(Apache / nginx)の
ServerName・server_name - メールサーバーやプログラムの設定ファイル
- 日本語ドメインに対応していない古いシステムへの入力
よくある質問
英字の大文字・全角英数字はどうなりますか?
ドメインは大文字・小文字を区別しないため、変換時に小文字に揃えます。全角の英数字も半角に正規化してから変換します。
URLのパス部分は変換されますか?
変換するのはドメイン(ホスト名)部分だけです。パスやクエリに含まれる日本語は、URLエンコード で %E3%81%82 の形式に変換します。
偽サイト(ホモグラフ攻撃)に注意とは?
キリル文字の「а」とラテン文字の「a」のように見た目がそっくりな文字を使い、本物そっくりのドメインを作る手口があります。怪しいリンクは Punycode に変換すると、xn-- で始まる別のドメインだと見分けられます。