日本語の名前を、互換性のある文字列へ表し直している
日本語のドメイン名をコピーしたとき、xn--で始まる英数字の並びに変わることがあります。これは多くの場合、文字化けではなく、国際化ドメイン名を既存の仕組みで扱うための表現です。日本語の名前と、対応するASCII表記が同じ名前を指します。
国際化ドメイン名をアプリケーションで扱う仕組みをIDNAといい、その中で使う符号化方式がPunycode(ピュニコード)です。人が読みやすい表現と、通信や設定で使う表現を分けることで、日本語などの文字を含む名前を扱います。
変換するのは、ドットで区切られた名前の部分
| 表現 | 文字列 |
|---|---|
| 日本語での表現 | 日本語.example |
| ASCIIでの表現 | xn--wgv71a119e.example |
この例では「日本語」というラベルがxn--wgv71a119eになります。ドメイン名はドットで区切られたラベルからできているため、日本語を含む該当ラベルを処理します。URL全体を一つの文字列としてPunycodeへ変換するわけではありません。
IDNAの用語では、条件を満たすUnicode側の表現をU-label、対応するASCII側の表現をA-labelと呼びます。単にxn--を付ければ何でも有効になるわけではなく、符号化結果や使える文字などの条件を満たす必要があります。
xnの後の二つのハイフンにも意味がある
xn--は、この種のASCII表現であることを示す接頭辞です。後半は、日本語の発音をローマ字で書いたものでも、翻訳でもありません。Unicodeの文字列を規則に従って符号化した結果なので、日本語の読みが分からなくても機械的に戻せます。
例えば「日本語」をnihongoへ変えることはローマ字表記への変換であり、Punycodeとは別です。Punycodeの文字列を目で読んで発音や意味を推測する必要はありません。設定に貼り付けるときは、ハイフンを長いダッシュへ変えたり、途中の数字を省いたりしないことが大切です。
パーセントで始まる日本語URLとは違う
URLのパスなどで日本語が%E6のような並びになるのは、パーセント符号化です。これはバイトを16進数で表す方法で、ドメイン名のIDNAとは別の処理です。一つのURLの中に、Punycodeで表したホスト名と、パーセント符号化したパスが同時に現れることもあります。
したがって、xn--を含む名前を、単純なURLデコード機能で日本語へ戻せるとは限りません。ドメイン名用の変換と、URL中のエスケープを戻す処理を使い分けます。設定画面がどちらの形式を受け付けるかも、製品の説明に従ってください。
ブラウザーが英数字のまま見せる理由
ブラウザーは、国際化ドメイン名をいつでも日本語などへ戻して表示するとは限りません。異なる文字体系にある似た文字を組み合わせると、別のドメインが有名な名前のように見えることがあるためです。Chromiumは、そのような紛らわしさを判定し、条件によってPunycode側を表示する方針を公開しています。
これはxn--のドメインが危険だという意味でも、日本語で表示されたものが必ず安全だという意味でもありません。表示方針はブラウザーや版によって変わります。ログインや支払いの場面では、名前の見た目だけに頼らず、正規のアプリや保存済みのブックマークから目的のサイトへ進む方法も有効です。
文字化けと判断する前に確かめること
まず、変わった場所がURLのドメイン部分か、パス部分かを確認します。ドメインのラベルがxn--で始まるなら、IDNAのASCII表現である可能性があります。JPRSの日本語ドメイン名の案内でも、運用時にこの表記を使う場面が説明されています。
なお、Punycodeは暗号化ではなく、秘密を隠す機能ではありません。また、日本語を含むどんな文字列でも自由に登録できるわけではなく、登録先の文字・長さなどの条件があります。読める表現と運用上の表現を行き来する仕組みと捉えると、コピーしたURLが突然英数字になる理由が理解できます。
関連する雑記
参考資料
資料確認日:2026年10月2日
