本文へスキップ
App Museum
English

Punycode変換ツール(日本語ドメイン⇔xn--)

日本語ドメイン名と「xn--」で始まるPunycodeの表記を、どちら向きでも1行ずつ変換。URLやメールアドレスはドメイン名だけを変換し、全角・大文字の整理、使えない文字、文字種の混在によるなりすましの疑いも表示します。

変換の種類

日本語のドメイン名と xn-- の表記を、どちら向きでも1行ずつ変換します。

使い方

  1. 「変換の種類」を選びます。ふだんは最初に選ばれている「ドメイン名・URL・メールアドレス」を使います
  2. 「変換する文字列」に、日本語ドメイン名か xn-- で始まる表記を1行に1つずつ入力します。URL やメールアドレスをそのまま貼り付けてもかまいません
  3. 入力するたびに「xn-- の表記(Punycode)」と「元の文字の表記(Unicode)」の両方が更新されます。どちら向きの入力でも、両方の表記が並びます
  4. 「行ごとの内訳」で、ラベル(ドットで区切られた部分)ごとの変換、使われている文字の種類、変換できない理由や注意を確かめます
  5. 「コピー」でそれぞれの表記をまとめてコピーできます。変換できなかった行は空行になり、行の並びは入力と同じです

「例を入れる」を押すと、選んでいる変換の種類の例が入ります。入力した文字列はブラウザの外へ送信されず、保存もされません。

具体例

次の6行を入力します。

日本語.jp
https://例え.テスト/パス?q=1
info@ドメイン名例.jp
xn--wgv71a119e.jp
WWW.東京.jp
аpple.com
  • 日本語.jp → xn--wgv71a119e.jp
  • https://例え.テスト/パス?q=1 → https://xn--r8jz45g.xn--zckzah/パス?q=1。URL はホスト名だけを変換し、パスやクエリは書いたまま残します
  • info@ドメイン名例.jp → info@xn--eckwd4c7cu47r2wf.jp。メールアドレスは @ より後ろだけを変換します
  • xn--wgv71a119e.jp → 元の文字の表記は 日本語.jp。逆向きの変換も同じ欄に入力できます
  • WWW.東京.jp → www.xn--1lqs71d.jp。全角の英字と全角のドットは、半角に整えてから変換します
  • аpple.com → xn--pple-43d.com。先頭の а は英字の a ではなくキリル文字なので、「ラテン文字とキリル文字が混ざっています」という注意と、文字ごとのコードポイント(а U+0430 キリル文字)が表示されます

変換のしかた

  • xn-- の表記にする: ドットで区切ったラベルのうち、ASCII 以外の文字を含むものだけを Punycode(RFC 3492)に変換し、先頭に xn-- を付けます。ASCII だけのラベルは小文字にするだけです
  • 元の文字に戻す: xn-- で始まるラベルを Punycode として読み、元の文字に戻します。大文字の XN-- でもかまいません。戻した結果をもう一度変換して同じ表記にならないものは「正しい Punycode ではありません」と表示します
  • ドメイン名の規則で整える: ブラウザと同じように(UTS #46 の規則にならって)、全角の英数字は半角に、半角カタカナは全角に、大文字は小文字に、か と分かれた濁点は が にまとめてから変換します。。 . 。 はドットとして扱います。ソフトハイフンやゼロ幅スペースのような目に見えない文字は取り除きます
  • 使えない文字: 空白、! や ( のような記号、« や § のような句読点、置換文字 �、制御文字はドメイン名に使えないので、その行は変換しません。㈱ のように整えると (株) になる文字も同じです
  • 注意だけ出すもの: 変換はできるものの、ホスト名や登録に使えない可能性があるものは「注意」として表示します。ハイフンで始まるか終わるラベル、3〜4文字目が -- のラベル、アンダースコア(_)、絵文字などの記号、63文字を超えるラベル、253文字を超えるドメイン名です
  • URL とメールアドレス: https:// のようなスキームで始まる行は URL、@ を含む行はメールアドレスとして、ドメイン名の部分だけを変換します。ポート番号(:8080)、パス、ユーザー名、メールのローカル部(@ より前)は書いたまま残します。/ ? # より後ろの @ はパスの一部とみなし(example.jp/@user など)、メールアドレスとしては読みません。このため、ローカル部に / を含むまれなメールアドレスは、ホスト名とパスとして扱われます。http や https の URL では、ブラウザと同じく \ もホスト名の終わりとして扱い、%E6%97%A5 のようなパーセントエンコードのホスト名は元の文字に戻してから変換します。[ で始まる IPv6 アドレスは変換しません

なりすましの見分け方

見た目が英字とほとんど同じ別の文字を使って、有名なサイトに似せたドメイン名(ホモグラフ攻撃)があります。このツールはラベルごとに文字の種類を調べ、次の場合に注意を表示します。

  • 文字の種類が混ざっている: 1つのラベルにラテン文字とキリル文字が混ざっているなど。日本語のラベル(漢字・ひらがな・カタカナと英字)、中国語(漢字・注音字母と英字)、韓国語(漢字・ハングルと英字)のふつうの組み合わせは注意しません
  • 英字に見える文字だけでできている: すべてキリル文字で書いた аррӏе(apple に見えます)のように、英字と見分けにくいキリル文字やギリシャ文字だけでできたラベル

注意が出たラベルは、ASCII 以外の各文字のコードポイントと文字の種類を一覧にします。メールやメッセージのリンクが怪しいときは、xn-- の表記に変換して英字だけのドメインかどうかを確かめてください。注意が出なくても安全とは限りません。

文字列だけを変換する

「文字列を Punycode に(xn-- なし)」と「Punycode を文字列に(xn-- なし)」は、ドメイン名の規則を通さずに RFC 3492 の Punycode だけを変換します。大文字・小文字や全角はそのまま扱い、xn-- も付け外ししません。

  • 3年B組金八先生 → 3B-ww4c5e180e575a65lsy2b(RFC 3492 の例)
  • パフィーdeルンバ → de-jg4avhby1noc0d(RFC 3492 の例)

ASCII の文字は最後のハイフンより前にそのまま並び、それ以外の文字が後ろの英数字に変換されます。ASCII だけの文字列 abc は abc- になります。

よくある使いみち

  • 日本語ドメインを設定に書く: DNS のゾーンファイル、Web サーバーの設定、SSL 証明書の申請、メールの送信元の設定など、xn-- の表記でしか書けない場所に使います
  • ログやアクセス解析の xn-- を読む: サーバーのログや証明書に出てくる xn-- のホスト名が、どの日本語ドメインなのかを確かめます
  • 怪しいリンクを確かめる: 英字に見えるドメインに別の文字が混ざっていないかを調べます
  • ドメイン名の候補を確かめる: 登録したい日本語ドメインが xn-- の表記で何文字になるか、使えない文字がないかを事前に見ます

FAQ

Punycode とは何ですか?

日本語などの ASCII 以外の文字を含むドメイン名(国際化ドメイン名、IDN)を、DNS で扱える英小文字・数字・ハイフンだけで表す方式です。RFC 3492 で決められています。ドメイン名ではラベルごとに変換し、先頭に xn-- を付けて、もともと英字のラベルと区別します。

ブラウザのアドレスバーに日本語で入力すれば、変換しなくてもよいのでは?

ブラウザは裏で xn-- の表記に変換してから接続しています。DNS の設定、サーバーの設定ファイル、証明書の申請、一部のメールソフトなどは日本語のまま受け付けないことがあるので、そうした場所に書くときに変換が要ります。

「整えてから変換しました」と表示されるのはなぜですか?

ドメイン名では大文字と小文字、全角と半角を区別しないので、変換の前に1つの形にそろえる規則(UTS #46)があります。たとえば WWW.東京.jp は www.東京.jp と同じドメイン名です。このため、変換した結果を元に戻しても、入力した文字と同じにはならないことがあります。

結果はブラウザの変換と完全に同じですか?

日本語、英字、全角・半角、ギリシャ文字やキリル文字などのよく使われる文字では、Node.js が実装している URL の標準(WHATWG URL)の変換と同じ結果になることをテストで確かめています。ただし、規則の表をすべて持っているわけではなく、次の点はブラウザより厳しく扱います。

  • ! ( * などの ASCII の記号と、« § のような句読点は、ブラウザが通す場合でも使えない文字として扱います(先頭の *. だけはワイルドカードとして残します)
  • ゼロ幅の結合文字(U+200C / U+200D)を含むラベルは変換しません
  • ハイフンの位置や長さの制限は、ブラウザは確かめませんが、このツールは注意として表示します

右から左に書く文字(アラビア文字・ヘブライ文字)の並びの規則(RFC 5893)は確かめません。

xn-- で始まるのに「正しい Punycode ではありません」と出ます

xn-- の後ろが Punycode として読めない、読んでも ASCII だけになる、またはもう一度変換すると同じ表記にならない場合です。xn-- の表記を手で書き換えたり、途中で切れたりしていないか確かめてください。大文字や全角などの整える前の文字に戻るものは、規則に合わない表記として別に知らせます。

メールアドレスの @ より前の日本語は変換されませんか?

されません。Punycode はドメイン名のための方式で、メールアドレスのローカル部(@ より前)には使いません。ローカル部に日本語を使うには、送る側と受ける側のメールサーバーがどちらも SMTPUTF8 という拡張に対応している必要があります。

入力したデータは保存されますか?

いいえ。変換はすべてブラウザ内で行い、入力した文字列を送信したり保存したりしません。ページを再読み込みすると消えます。

種別
ユーティリティ
カテゴリ
開発者向け
タグ
punycode
idn
domain
url
email
converter
developer
security
  • カラーコード変換ツール

    HEX・RGB・HSL のカラーコードを相互に変換し、HSV・CMYK・OKLCH の表記も表示。カラーピッカーやプレビューで確認でき、白・黒や指定した文字色とのコントラスト比(WCAG)も分かります。

    ユーティリティ開発者向けcolorhexrgbhslhsvcmykoklchcontrastcontrast-checkerwcagconverterdeveloper
  • docker run → Docker Compose 変換ツール(compose.yaml 作成)

    docker run のコマンドを貼るだけで compose.yaml に変換。ポート・環境変数・ボリューム・ネットワーク・ヘルスチェック・GPU など docker run の全オプションを読み取り、複数のコマンドを1つのファイルにまとめます。$(pwd) や $ の書き換え、Compose に無いオプションも知らせます。

    ユーティリティ開発者向けdockerdocker-composecomposeyamlcontainerconverterdeveloper
  • Markdown表作成ツール

    ExcelやスプレッドシートのセルをコピーしてMarkdownの表に変換します。表の上でセルを編集し、列の左・中央・右揃え、行や列の追加・入れ替え・並べ替えができます。全角文字の幅を数えて縦線をそろえ、既存のMarkdownの表の整形や、Excelへの貼り戻しにも使えます。

    ユーティリティ開発者向けmarkdowntableexceltsvcsvconverterdevelopergithub