跳到主要内容

Punycode / IDN 域名转换:Unicode ⇄ xn--

国际化域名 Unicode ⇄ Punycode 互转:中文.中国 ⇄ xn--fiq228c.xn--fiqs8s,逐段拆解,支持邮箱,纯浏览器本地

  • 本地处理
  • 分类 编码加密
  • 适合 快速检查小 payload、令牌、哈希和编码值。
转换结果
示例

所有转换都是这个标签页里跑的纯 JavaScript —— RFC 3492 的 bootstring 运算不调用任何服务器,你查的域名(包括还没注册的)不会被记录或发出。分享链接会把输入写进 URL 的 query string,所以涉及未公开品牌或内部主机名时,不要分享带这段输入的链接。

这个工具能做什么

一个双向的 Punycode / IDN(国际化域名)转换工具,把含非 ASCII 字符 的域名编码成 DNS 能识别的 ASCII 形式,也能反向解回原文。输入 "中文.中国"、"例え.jp" 或 "münchen.de",每个含非 ASCII 字符的 label 都会用 RFC 3492 bootstring 算法编码并加上 "xn--" 前缀,得到 "xn--fiq228c.xn--fiqs8s"、"xn--r8jz45g.jp"、"xn--mnchen-3ya.de";切换 方向,任何 "xn--" 段都会解回你最初输入的中文/日文/Unicode。纯 ASCII 的段原样保留,所以 "shop.中文.com" 只会改中间那一段。工具能识别邮箱 地址,粘 "张三@邮箱.中国",只转 "@" 后面的域名部分,本地名保持 不动。逐段拆解面板会列出每一段对应哪个 xn-- 形式,多级域名一眼看清 哪里出了问题;多行输入可以一次批量处理一整列主机名。完整的 RFC 3492 算法(bias 自适应、emoji 等增补平面字符的代理对处理、溢出保护)全部 从零实现,完全在你的浏览器标签页里运行,不联网、不记录你查过哪些 域名,这一点在你排查还没注册的域名、或者怀疑是钓鱼的相似域名时尤其 重要。

工具细节

输入
文本
页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
输出
即时结果 + 复制
结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
隐私
浏览器本地处理
主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
保存 / 分享
可分享链接状态
关键设置会进入 URL,复制链接后别人能复现同一组参数。
性能预算
首屏 JS ≤ 10 KB
没有声明 WASM 依赖,适合快速打开和移动端使用。
适用场景
编码加密 · 程序员
分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。

怎么用

  1. 1. 输入

    把内容粘贴或拖入工具面板。

  2. 2. 处理

    点击按钮,在浏览器内本地处理,文件不上传。

  3. 3. 复制 / 下载

    一键复制结果或下载到本地。

Punycode / IDN 域名转换 适合怎么用

适合做浏览器本地的编码、解码、哈希、令牌检查和可分享转换。

适合编码任务

  • 快速检查小 payload、令牌、哈希和编码值。
  • 把值整理好再放进 API、URL、文档或客服工单。
  • 输入可能敏感时,尽量避开账号型在线工具。

编码检查项

  • 真实密钥不要随便粘贴,除非确认能接受本地浏览器处理。
  • 分享结果前确认这个操作是否可逆。
  • 哈希值要核对算法和大小写是否符合对方要求。

下一步可以接着做

这些入口会把当前任务接到更完整的工具链里。

  1. 1 URL 编码 / 解码 把空格、中文、emoji 等特殊字符转 %xx 百分号编码,或反向解码,全程浏览器本地 打开
  2. 2 Unicode 字符检查器 逐字符拆解任意文本: 码点、UTF-8/UTF-16 字节、HTML 实体、JS 转义、字符名, 并揪出隐藏的零宽 / 同形字符。 打开
  3. 3 Base32 / Base58 编解码器 Base32 + Base58 编码/解码, RFC 4648 base32 (含 Crockford 变体) + Bitcoin base58 + Solana base58, 支持 hex/文本/文件输入。 打开

真实使用场景

  • 注册中文域名后,拿到 xn-- 形式填进 DNS 面板

    你从注册商买了 "中文.中国",但 DNS 托管、CDN、TLS 证书签发方都要 ASCII 形式。流程:在编码方向粘 "中文.中国",读出 "xn--fiq228c.xn--fiqs8s",复制进 A 记录、CDN 源站、证书申请的 SAN 列表。逐段拆解会确认二级 label 和 ".中国" 顶级域是分开各自编码的, 这正是注册局期望的;某一段写错会让解析悄无声息地挂掉,连个 报错都没有。

  • 排查一个可能是同形字攻击的可疑链接

    一封钓鱼邮件链向一个显示为 "xn--pple-43d.com" 的主机,肉眼读不出 来。在解码方向粘进去,解出 "аpple.com",里面是西里尔字母 "а" (U+0430),不是拉丁 "a"。这个解出来的字符就是这条链接冒充 Apple 的铁证。再配合 unicode-character-inspector 确认确切码点,然后举报 或封禁这个域名。因为这是 100% 浏览器本地的工具,你不必把攻击者的 URL 交给任何第三方服务器。

  • 通过旧 SMTP 中继给国际化域名发信

    你的应用要投递到 "support@почта.рф",但下游中继比 SMTPUTF8 还老, 会拒绝非 ASCII 域名。把完整地址粘进编码方向,只有域名会转,得到 "support@xn--80a1acny.xn--p1ai",本地名原样保留。把它填进信封收件 人,旧中继就收了。识别邮箱的拆分逻辑帮你省掉手动按 "@" 切分、 顺手把本地名也错编进去的坑。

  • 部署前审计一个多级国际化主机名

    你的预发主机是 "测试.shop.中文.com",上线通配证书和 CORS 白名单 之前,你得先搞清楚哪些 label 会变 xn--、哪些保持 ASCII。粘进去, 打开逐段拆解,你看到 "测试 → xn--0zwm56d"、"shop → shop"、 "中文 → xn--fiq228c"、"com → com"。现在你知道源站、CORS 策略、 HSTS preload 条目到底该用哪个 ASCII 主机名了,各处配置里 Unicode 形式和 ASCII 形式混用,是 "Chrome 里好使、curl 里报错" 这类 bug 的常见来源。

  • 批量转换一堆国际化域名填进配置文件

    你要把五十个国际化品牌域名的白名单迁进 nginx 的 server_name 列表, 那必须是 ASCII。把五十个一行一个粘进编码方向,一次性把 xn-- 那列 复制出来。每行独立转换,某一行格式错了会就地显示行内错误,而不是 把整批都搞坏,这样你只改那一行,不用重跑全部。

常见踩坑

  • 把整个域名当成一个字符串去编码。Punycode 是逐 label 工作的,你必须按 "." 切分,每个 label 单独编码。把 "münchen.de" 当一整块编出来是乱码;点是 label 边界,不是要编码的字符。这个工具会自动帮你按 "." 切分。

  • 忘了 "xn--" 大小写不敏感、但编码载荷不是随便能改的。你不能把 "xn--" 后面那段转大写或手动改,"xn--MNCHEN-3YA" 和 "xn--mnchen-3ya" 解出来一样是因为 DNS 大小写不敏感,但改动载荷里任何一个字符(比如末尾 "3ya")会得到不同或非法的域名。永远用真正的编解码器走一遍,绝不手改 ACE 字符串。

  • 注册前跳过 UTS-46 归一化。输入 "MÜNCHEN.DE" 直接编码,得到的结果技术上合法但不规范;注册商会先转小写、做 NFC 归一化,所以你拿到的 xn-- 可能跟实际注册的那个不一样。对任何打算注册的域名,先归一化(转小写 + NFC)再编码。

隐私说明

整个 RFC 3492 编解码器(编码、解码、bias 自适应、代理对处理) 都是在你浏览器标签页里跑的纯 JavaScript。你输入的域名不会发到任何 服务器,没有打点记录你转过哪些主机,也不做任何日志。这一点对这个 工具尤其重要:有人会把疑似钓鱼的域名、还没注册的域名粘进来,这两 类都不该泄露。唯一要留意的是分享链接,它会把当前输入写进 URL 的 query string,所以你把含有未公开品牌域名或内部主机名的 "分享" 链接 粘到聊天或邮件里时,对方服务器的访问日志会留下记录。涉及敏感主机 时,手动复制结果,别分享 URL。

常见问题

类似工具组合

做你这行的人, 还会一起用这些。

Made by Toolora · 100% client-side · Updated 2026-06-12