跳至主要內容
Lizely

Punycode 轉換器

在瀏覽器中將國際化網域標籤於 Unicode 與 RFC 3492 Punycode 之間相互轉換,全程在瀏覽器端執行。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.僅貼入網域名稱,並選擇 Unicode 至 ASCII 或 ASCII-Punycode 至 Unicode 的轉換模式。
  2. 2.逐一轉換並檢查每個標籤;xn-- 字首僅在標籤邊界處新增或移除。
  3. 3.複製結果後,再以目標序號產生器構或 URL 庫驗證,並檢查是否有相似字元。

關於Punycode 轉換器

Punycode Converter 將國際化網域標籤在可讀的 Unicode 與用於網域名稱系統的 ASCII 格式之間進行轉換。輸入一個網域,例如 bücher.example,即可獲得 xn--bcher-kva.example,或反向轉換以 xn-- 開頭的 ASCII 名稱。每個標籤都會使用 RFC 3492 Bootstring 演算法在本機進行處理。

Punycode 使用基本的 ASCII 字母、數字與連字元來表示 Unicode 編碼點。現有的 ASCII 字元會先被複製,而非 ASCII 值則會被編碼為變長度的差值。該演算法會根據處理的值調整其偏誤。此實現修正了 RFC 常數 base 36、tmin 1、tmax 26、skew 38、damp 700、初始偏誤 72 與初始編碼點 128。

網域標籤在轉換前會先被分隔。Unicode 中常見的全 stops 在 CJK 文字中會被標準化為 ASCII 的點。包含非 ASCII 編碼點的標籤在編碼後會加上 xn-- 字首;一個普通的 ASCII 標籤會被轉為小寫,並保持其他部分不變。解碼模式僅對帶有該字首的標籤進行 Bootstring 解碼。

此範圍刻意比完整的瀏覽器 URL 解析器來得狹窄。該工具不接受方案、路徑、埠、查詢或片段,不執行百分比解碼、不解析 DNS、不測試註冊可用性,也不與序號產生器構通訊。僅貼入網域名稱。空標籤、格式錯誤的數字、無效的 Unicode 基數值以及超過 1,000 碼點的輸入皆會被拒絕。

punycode 並非語言翻譯工具。解碼會顯示 Unicode 這個拼寫所代表的 ASCII 標籤,但不會告訴你如何發音,或它是否屬於與之相似的組織。不同書寫系統的字元可能看起來幾乎一樣。有效的轉換並不能證明一個網域是值得信賴的。

生產 URL 系統通常在 RFC 3492 編碼前,會先應用 Unicode 正規化、語境規則以及 UTS #46 對映。本頁執行的是檔案中說明的原始標籤轉換,並無法保證每個瀏覽器或序號產生器構都會接受相同的結果。如果序號產生器構拒絕某個結果,應遵循該序號產生器構的 IDN 政策,而不是盲目地改變字元。

八個外部測試案例涵蓋拉丁語重音、希臘語、CJK、符號、單標籤與多標籤網域。所有情況皆雙向驗證,包括 bücher、mañana、例子、測試、παράδειγμα 與雪人命令符示例。負面測試涵蓋空標籤與不完整的編碼序列。

當 DNS 或憑證欄位需要 ASCII 時,使用編碼模式;若要檢視 xn-- 名稱,則使用解碼模式。請仔細比對每一標籤、書寫系統與組織,並讓符合標準的 URL 庫處理完整應用網址。請將安全過濾與序號產生器構驗證與此可逆的編碼步驟分離。

此實現針對 Unicode 碼點進行迭代,而非 UTF-16 一半,因此補充字元得以完整保留。算術溢位檢查保護 delta 乘法與權重累積。輸出結果對宣告的原始 Punycode 標準是確定的,複製按鈕僅複製轉換後的網域,不包含方案或尾部斜線。標籤長度限制與序號產生器構政策在轉換後仍適用。一個語法正確的標籤可能過長、被保留、被封鎖或不可用,因此必須由權威消費者驗證最終的 ASCII 名稱。

方法與來源

每個網域標籤皆使用 RFC 3492 Bootstring 常數處理。非基本碼點會以自適應偏移量進行 delta 編碼;帶 xn-- 字首的標籤會解碼為經驗證的 Unicode 基數值。全形點會分隔標籤,並非輸入內容的一部分。

常見問題

這是否會檢查網域是否存在?
不會。它僅執行本機標籤轉換,不會進行 DNS、WHOIS 或註冊商查詢。
為何瀏覽器會產生不同的結果?
瀏覽器可能在 Punycode 之前應用 UTS #46 對映、標準化與上下文 IDN 觀念。本頁面僅提供原始 RFC 3492 標籤轉換。
解碼後的 Unicode 是否安全可瀏覽?
不一定。相似字元可能導致同形攻擊。請獨立驗證組織與書寫系統。

編碼與加密 使用指南

查看全部