Punycode 轉換

把國際化網域轉成 ASCII 的 punycode,或把 xn-- 還原成文字。

DNS 裡的網域標籤是 ASCII

münchen 或「中文」存進 DNS 時,會變成以 xn-- 開頭的 punycode。這一頁轉換的是這些標籤,不是網址編碼:斜線、查詢和片段維持原樣。已經寫好的地址要拆欄位,用 網址解析。

怎麼用

  1. 貼上網域、完整連結或電子郵件。
  2. 方向選「轉成 punycode(ASCII)」或「轉成 Unicode」。顯示範例是一條 https://münchen.example/ 後面接著中文路徑的連結,轉成 ASCII。
  3. 連結裡只轉換主機。電子郵件只轉換 @ 後面的網域。路徑裡的漢字不動。
  4. 不合法的 xn-- 會報錯,不會吐出半截名字。

哪些會變

用點分開的每個標籤各自轉換。example 這種純 ASCII 保持不變。münchen.de 變成 xn--mnchen-3ya.de。中文.com 變成 xn--fiq228c.com。協定、路徑和查詢不做 punycode。再按相反方向做一次就能還原。這是主機名稱用的 IDNA,不是通用的文字加密。

什麼時候用

  • 看憑證或 DNS 匯出裡的 xn-- 到底是哪個名字。
  • 把中文網域放進只接受 ASCII 主機的系統。
  • 在相信一個國際化網域之前,先對一下它是不是你以為的那個。

常見問題

路徑為什麼還是中文?

Punycode 只用於 DNS 標籤,不用於路徑。路徑如果對方要求編碼,用百分比編碼。

電子郵件 @ 前面沒有變。

那是本地部分。只有網域才是主機名稱。