Unicodeドメイン ↔ Punycode変換ツール (IDN / xn–)
Unicodeドメイン、国際化ドメイン名(IDN)、絵文字ドメインをPunycode(xn--形式)へ変換したり、xn--形式のドメインを元のUnicodeドメインへ戻すことができます。
DNS設定や一部のサーバー環境では、Punycode形式が必要になることがあります。このツールはRFC3492仕様に基づいて正確に変換を行います。
複数のドメインをまとめて貼り付け、一括変換することも可能です。変換処理はブラウザ内で実行され、入力データがサーバーへ送信されることはありません。
ドメイン変換後にURLパラメータを安全にエンコードしたい場合は、URLエンコード・デコードツールも利用できます。
Unicode変換が必要になるケース
Webサーバーの設定、SSL証明書の登録、DNSレコードの管理では、Punycode形式が必要になる場合があります。
ApacheやNginxなどのWebサーバーでは、Unicodeドメインを内部的にPunycode形式で処理することが一般的です。
プログラミング、HTTPヘッダー、API通信、ログ解析などのシステム処理でもxn--形式のドメインが広く利用されています。
Unicodeドメインと絵文字ドメインの変換方式の違い
Unicodeドメインと絵文字ドメインでは、内部的な変換方式が異なります。Unicode文字を含むドメインラベルは、ASCII互換の文字列へ変換され、xn--接頭辞と組み合わせて処理されます。
絵文字ドメインもUnicodeベースでエンコードされ、Punycode形式のASCII文字列として保存されます。
どちらの変換方式もRFC3492標準に基づいて処理されます。
Punycode形式の構造とxn–接頭辞の役割
Punycodeへ変換されたドメインラベルは、必ずxn--接頭辞で始まります。
この接頭辞は、そのラベルがPunycodeでエンコードされた国際化ドメインであることをDNSシステムへ示す識別子です。
接頭辞の後ろに続く文字列は、UnicodeドメインをASCII互換文字へ変換した結果です。
各ドメインラベルは個別にエンコードされます。たとえばunicode.domain.comのようなドメインでは、必要なラベルのみが個別に変換されます。
comやnetなどASCII文字だけで構成されたラベルは変換されず、そのまま保持されます。
複数ドメインをまとめて変換したい場合
複数の国際化ドメインを一度に変換したいケースがあります。このツールでは、ドメインを行単位で入力することで一括変換できます。
変換結果はまとめてコピーできるため、サーバー設定ファイルやスプレッドシートへそのまま貼り付け可能です。
ドメイン移行、サーバー移転、多言語DNS設定などの作業効率化にも役立ちます。
ブラウザはUnicodeドメインをどのように処理するのか?
ユーザーがブラウザのアドレスバーにUnicodeドメインを入力すると、ブラウザは自動的にPunycode(xn--形式)へ変換してDNSサーバーへ問い合わせを行います。
DNS応答で受け取ったPunycodeは再びUnicodeドメインへ復元され、アドレスバーに表示されます。この処理はバックグラウンドで自動的に行われるため、通常ユーザーが意識することはありません。
ただし、サーバー設定ファイル、SSL証明書登録、アプリケーション開発などでは、Punycode形式を直接扱う必要がある場合があります。
UnicodeドメインをPunycodeへ変換したり、変換結果を確認したい場合にこのツールを利用できます。
よくあるご質問
Punycodeは、日本語、中国語、韓国語、絵文字などのUnicode文字を含むドメイン名を、英数字とハイフンのみで構成されたASCII互換文字列へ変換する国際標準エンコード方式です。
RFC3492で定義されており、変換後の文字列は必ずxn--で始まります。
この形式により、ASCIIのみをサポートするDNSサーバーやWebサーバーでも国際化ドメイン名(IDN)を問題なく扱うことができます。
上部タブから「Unicodeドメイン → Punycode変換」を選択し、入力欄にドメインを1行ずつ入力して変換ボタンを押します。
複数のドメインをまとめて入力すると一括変換されます。変換結果は下部の結果エリアに表示され、クリップボードへコピーボタンでまとめてコピーできます。
はい、可能です。Punycodeは多言語文字だけでなく、絵文字もASCII互換文字列へ変換できる国際標準です。
ただし、一部のドメイン登録事業者では絵文字ドメインを正式サポートしていない場合があります。登録前に対応状況を確認することをおすすめします。
変換自体は問題なく行えます。
主要なプログラミング言語には、Punycode変換を行うための標準ライブラリやAPIが用意されています。
- Java:
java.net.IDNクラスのtoASCII()、toUnicode()メソッドを使用します。 - Python:
.encode('idna')またはencodings.idnaモジュールを使用します。 - JavaScript:
URLAPIが自動的にPunycode変換を処理し、必要に応じてpunycodeパッケージを利用することもできます。
コードへ組み込む前に、変換結果の確認や検証を行う用途としてこのツールを利用できます。
以下のようなケースでは、変換結果が想定と異なる場合があるため注意が必要です。
- ラベル単位で変換される: Punycodeはドメイン全体ではなく、ドットで区切られた各ラベル単位で変換されます。
unicode.domain.comではcomは変換されません。 - 大文字・小文字の正規化: 変換前にドメインを小文字へ統一することが推奨されます。一般的には小文字形式が使用されます。
- 前後の空白: 入力値に余分な空白が含まれていると変換エラーの原因になる場合があります。このツールの「前後空白削除」オプションを有効にすると自動的に処理されます。
「Punycode → Unicodeドメイン変換」タブで、変換後のPunycodeを再入力すると元のUnicodeドメインへ復元できます。
復元された値が最初に入力したドメインと一致していれば、変換は正しく行われています。DNS設定やドメイン登録前に一度確認しておくと安心です。