IDN Punycode コンバーター

IDNをPunycodeに、またPunycodeをIDNに簡単に変換します。

2件中5件の評価
IDN Punycode コンバーター

IDN Punycode コンバーターは、国際化ドメイン名をPunycodeのASCII表記に変換し、Punycodeを読みやすいUnicodeテキストに戻せる無料ツールです。

Punycodeとは何ですか。なぜ必要なのですか?

Punycodeは、UnicodeのU-labelをASCIIのA-labelへ変換するIDNAの仕組みの一部です。ü、é、漢などの文字を含む名前を、もともと基本的なラテン文字、数字、ハイフンのみを想定して設計されたシステムでも扱えるようにします。

IDNAのA-labelはxn--で始まります。この接頭辞は、後に続く文字列がU-labelをPunycodeで表したものだと、IDNA対応アプリケーションに示します。ドットは区切り文字のままなので、ドメインの各ラベルは個別に変換されます。

Punycodeは、一般にIDNAと略されるInternationalised Domain Names in Applicationsで使用されます。IDNAは検証や文字の処理も担い、Punycodeは使用可能なUnicodeラベルをASCIIで表現します。

Punycodeは暗号化ではなく、エンコードです。ASCII表記は誰でもUnicodeに戻せるため、秘匿性はありません。情報を隠す目的では使用しないでください。

図解:テキストがIDN Punycode コンバーターツールを双方向に通過する

国際化ドメイン名を変換するには?

UnicodeテキストはPunycode/ASCIIに変換へ、ASCIIのA-labelはIDN/テキストに変換へ入力してください。対応する結果がPunycode/ASCIIまたはIDN/テキストに表示されます。

  1. 変換するドメイン名またはラベルだけをコピーし、前後の引用符は含めないでください。
  2. アクセント付き文字やラテン文字以外を含むUnicodeテキストには、Punycode/ASCIIに変換を使用します。
  3. ASCIIのA-labelには、IDN/テキストに変換を使用します。
  4. 変換した各ラベルは、DNS、メール設定、アプリケーション設定へ追加する前に必ず確認してください。
digily.link のIDN Punycode コンバーターツールと入力フォーム

このコンバーターは、PHPのidn_to_ascii関数とidn_to_utf8関数を使用します。処理はサーバー上で行われます。入力内容はHTTPS経由でサーバーへ送信されますが、保存されません。

ドメインの変換例

簡単な変換例を見ると、表示用の名前とDNS互換の表記との関係が分かります。

入力 münchen.de

出力 xn--mnchen-3ya.de

出力結果を逆方向に変換すると、münchen.deに戻ります。ASCII文字だけで構成されたdeは変換不要ですが、üを含むラベルはxn--ラベルに変換されます。

入力内容は、有効なドメイン名のテキストである必要があります。一般的な入力は、基盤となる形式で次のように処理されます。

  • アクセント付き文字とラテン文字以外の文字: 使用可能なUnicodeラベルは、IDNAとPunycodeによってASCII表記へ変換されます。
  • ドット: 各ドットがラベルを区切ります。そのため、通常のASCIIラベルとエンコードされたラベルが1つのドメイン内に混在する場合があります。
  • 数字と通常のハイフン: これらはすでにASCII文字なので、ドメイン名の構文規則に反しない限り、通常はそのまま読める形で残ります。
  • 空白: 通常のDNSホストラベル内では、空白は無効です。誤って入った空白をドメインの一部としてPunycodeに保持させようとせず、削除してください。
  • 句読記号: ピリオドはラベルを区切りますが、URLのパス、ポート、クエリ文字列に含まれる文字はホスト名の一部ではありません。
  • 空または非常に長い入力: 入力が空の場合、変換するドメインがありません。また、DNSではエンコード後の各ラベルが63オクテットに制限されるため、見た目には短いUnicodeラベルでも変換後に長さを超えることがあります。
IDN Punycode コンバーターツールが生成した結果の例

Punycodeの変換に失敗したり、意図しない文字になったりするのはなぜですか?

変換に失敗する主な原因は、入力が有効なIDNテキストではない、A-labelの形式が不正である、または先に別のエンコードが適用されていることです。IDN/テキストへ変換する場合、A-labelではない通常のASCII入力は、そのまま変化しないことがあります。文字を手作業で変更する前に、元の値がUnicodeのU-label、ASCIIのA-label、URLエンコードされたホスト名のどれなのかを確認してください。

  • 不正なA-labelまたは別形式のエンコード: 形式が不正なxn--ラベルは変換に失敗することがあります。Base64、16進数表記、パーセントエンコードされたURLはPunycodeではありません。
  • サポートされていない文字: PunycodeのアルゴリズムはUnicode値を表現できますが、IDNAの規則やドメインレジストリによって、特定の文字、組み合わせ、文字体系が拒否される場合があります。
  • ラベルが長すぎる: DNSではエンコード後の各ラベルが63オクテットに制限されるため、Unicodeラベルが変換後に長さを超えることがあります。
  • 入力が不完全または余計な文字を含む: ホスト名と一緒に括弧、ポート番号、HTML属性の一部などをコピーすると、無効な値になることがあります。
  • 二重にエンコードされた入力: Punycodeドメイン内の文字が明示的に、または非正規の方法でパーセントエンコードされていると、パーセントシーケンスとして表示されることがあります。まずURLデコーダーでURLエンコードの層をデコードし、その結果得られたドメインを変換してください。
  • テキストではなくバイナリデータ: IDN変換が扱うのは、Unicodeのドメイン名テキストです。任意のファイルのバイト列をテキストとして扱うと、検証に失敗したり、意味のない文字になったりすることがあります。

Punycodeはどこで使われますか?

Punycodeを目にする主な場所は、ドメイン名、DNSレコード、ブラウザーのアドレス処理、ホスト名をASCIIで保存するシステムです。ブラウザーは、安全性に関する規則や使用されている文字に応じて、読みやすい国際化ドメイン名を表示することも、xn--形式のまま表示することもあります。

メールアドレスでは、@記号より後ろのドメイン部分にPunycodeを使用できます。@記号より前のメールボックス名をエンコードするものではありません。JSONペイロードやクエリ文字列にホスト名が含まれている場合、Punycodeが使われることがあります。ただし、一般的なテキストに対してJSONやクエリ文字列の構文がPunycodeを必要とするわけではありません。

Data URIの内容には、通常、パーセントエンコードまたはBase64が使われます。Punycodeが現れるのは、含まれるテキスト内に国際化ホスト名がある場合だけです。同様に、パスやクエリの値にはURLエンコーダーを使い、ホスト名自体にはPunycodeを使用してください。

よくある質問

IDNコンバーターにURL全体を貼り付けてもいいですか?

ホスト名を取り出し、その部分だけを変換するほうが安全です。スキーム、ポート、パス、フラグメント、クエリにはそれぞれ別の構文規則があり、その部分の文字にはPunycodeではなくURLエンコードが必要になる場合があります。

xn--ラベルを含むドメインは危険なサイトですか?

いいえ。正規の国際化ドメインにも、xn--ラベルは数多く使われています。ただし、異なる文字体系の見た目が似た文字を使い、誤解を招く名前を作ることも可能です。パスワードや支払い情報を入力する前に、デコード後の綴りと、想定している組織のドメインかどうかを確認してください。

絵文字をPunycodeドメインに使えますか?

絵文字のコードポイント自体はPunycodeアルゴリズムでエンコードできますが、IDNAのドメインラベルでは使用できません。さらに、ドメインレジストリのポリシーによって、使用可能な文字体系や記号に追加の制限が設けられる場合があります。

ブラウザーでUnicodeではなくPunycodeが表示されるのはなぜですか?

ラベル内に複数の文字体系が混在している場合、なりすましに関連する文字が含まれる場合、またはブラウザーの表示ポリシーを満たさない場合は、ASCII表記のまま表示されることがあります。これは表示上の安全対策であり、変換が間違っている証拠ではありません。

変換できたドメイン名は必ずDNSで使えますか?

いいえ。変換に成功しても、そのドメインが登録済みか、取得可能か、該当するレジストリで許可されているかは分かりません。結果を使用する前に、ラベルの長さと読める状態での綴りを確認し、使用されている文字がレジストリで認められていることを確かめてください。

人気のツール