网站 / SEO · 域名 / DNS

Punycode 域名

中文域名↔xn--形式

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 119 次使用
自动识别方向 · 即时转换 · RFC 3492
方向:等待输入
转换结果 result
在上方输入域名即可转换
按 . 分段对照 per-label · ASCII 段原样,含非 ASCII 段加 xn-- 编码
输入域名后按 . 分段对照展示
纯 ASCII 段(原样) 含非 ASCII / xn-- 段(朱砂)
批量转换 batch · 每行一个域名
就绪 · 输入中文 / Unicode 或 xn-- 域名
第一节

关于本工具

About

在浏览器地址栏敲中文域名,按下回车却跳转到错误页面——这是浏览器无法直接解析中文,背后需要将“百度.中国”转成“xn--百度-8vz.xn--中国-6x4”。在开发者工具、Nginx 配置或 Whois 查询里,看到的多是这种 Punycode 编码。这个工具在浏览器内完成双向转换:粘贴中文域名,即时输出 xn-- 形式;反之亦然。所有字符处理都在本地,域名不会离开当前页面。

使用场景

壹

国际域名注册

外贸公司运营小陈注册了一个包含中文「星」字的域名,但注册局后台只认 `xn--` 开头的 Punycode 编码。他把中文域名粘贴到工具里,一秒转出 `xn--wxtr44c`,复制到注册商搜索框直接通过,避免了因编码错误反复试错、甚至被他人抢注的风险。

贰

邮件系统配置

企业邮箱管理员老张收到一封发件人显示为「张三@公司.中国」的邮件,但服务器日志里全是乱码。他用工具把「公司.中国」转成 `xn--3bst00b.xn--fiqs8s`,填入邮件白名单规则,彻底解决了国际化邮件地址被反垃圾系统误拦截的问题。

叁

浏览器地址栏粘贴

用户小李在微信里收到一个中文域名链接「测速.中国」,点击后微信无法直接打开。他复制链接到本工具,转成 `xn--0tr25m.xn--fiqs8s`,再粘贴到 Chrome 地址栏,成功访问目标网站,避免了手动拼写 `xn--` 编码时容易漏字符的错误。

肆

SSL 证书申请

站长小王为中文域名「商城.中国」申请 Let's Encrypt 免费证书,但 ACME 客户端要求输入 Punycode 格式。他用工具把域名转成 `xn--55qx5d.xn--fiqs8s`,填入 CSR 生成命令,证书签发一次性成功,比之前手工查 RFC 表逐个字符转换快了 10 分钟。

伍

DNS 解析记录添加

运维工程师老赵在阿里云 DNS 控制台添加「测试.公司」的 A 记录,系统提示域名格式错误。他复制中文域名到工具,得到 `xn--0tr25m.xn--55qx5d`,填入记录值后生效。若直接填中文,DNS 解析会因编码不兼容导致网站无法访问。

第二节

使用指南

Getting Started

使用步骤

  1. 1在输入框粘贴或键入中文域名(如「百度.中国」),下方立即显示对应的 Punycode 编码(xn--... 形式)
  2. 2切换「编码→解码」模式,输入 xn-- 开头的 Punycode 字符串,右侧实时还原为中文域名
  3. 3点击结果旁的复制图标,将编码或解码后的域名存入剪贴板,供 DNS 配置或链接使用
  4. 4若输入不合法(如含空格或特殊符号),输入框下方显示红色提示,不生成无效结果

输入输出示例

输入输出说明
中文xn--fiq228c常规:两字中文域名,最典型的使用场景,验证基本编码转换
中国银行.中国xn--1lqs65d.xn--fiqs8s常规:含中文顶级域名的完整域名,验证多段编码
你好世界xn--6qq79v37d常规:四字中文,验证多字符输入无异常
aa边界:单字符纯ASCII,工具应原样返回,不触发编码
xn--fiq228c中文边界:输入已是Punycode编码,工具应解码回中文,验证双向转换
错误:输入为空边界:空白输入,验证工具对空值的处理(不崩溃、不返回错误结果)
中文123xn--fiq228c123易错:中英文数字混合,验证仅中文部分被编码,数字保持原样
a.b.ca.b.c易错:纯ASCII域名含点号,工具应保持原样,不误编码点号

常见错误对照

1.把完整 URL 直接粘贴到输入框

✗ 错误https://百度.com
✓ 修复百度.com

Punycode 转换只针对域名部分(不含协议、路径、端口),输入完整 URL 会导致转换失败或产生无意义结果。

2.混入空格或不可见字符

✗ 错误百度. com
✓ 修复百度.com

域名中不允许空格。复制时可能带入换行符、制表符或全角空格,这些字符会让 Punycode 编码结果完全错误。

3.把 Punycode 结果当普通域名直接访问

✗ 错误xn--百度-7v8b.com
✓ 修复xn--百度-7v8b.com(仅用于技术查看,浏览器会自动转换)

Punycode 是 ASCII 表示形式,浏览器地址栏通常显示 Unicode 形式。手动输入 Punycode 结果可能被部分客户端视为非法域名。

4.混淆 IDN 与 Punycode 方向

✗ 错误把 xn--4gq094i 当作中文域名输入
✓ 修复xn--4gq094i 是编码结果,应输入中文域名进行转换

Punycode 是单向编码过程:中文→xn--形式。反向转换(解码)是另一操作,输入框默认只做编码,混用方向会得到无意义输出。

5.输入含特殊符号的非标准域名

✗ 错误百度.com#fragment
✓ 修复百度.com

域名中不允许 #、?、@ 等符号,这些属于 URL 其他部分。Punycode 转换只处理标签(label),含非法字符会报错或产生无效编码。

6.误以为所有非 ASCII 域名都能转换

✗ 错误输入纯英文域名 example.com
✓ 修复仅输入含非 ASCII 字符的域名(如中文、日文、西里尔字母)

Punycode 编码只对非 ASCII 字符生效。纯 ASCII 域名输入后输出与输入相同,用户可能误以为工具未工作。

7.忽略 IDN 同形字攻击风险

✗ 错误paypaI.com(I 是大写 i,实际是西里尔字母 palochka)
✓ 修复使用前确认域名来源可信

不同 Unicode 字符可能外观相同(如拉丁 l 与西里尔 і),Punycode 会正确编码但用户肉眼难辨,这是钓鱼攻击常见手法。

第三节

工作原理

How It Works

核心公式

Punycode(x) = xn-- + base32encode(toASCII(x))

变量说明

  • x输入的中文域名(如 例子.测试)
  • toASCII(x)IDNA 2008 标准中域名转 ASCII 的预处理结果
  • base32encode将字节序列编码为 Punycode 字母表的算法

示例

输入中文域名「例子.测试」:先按 IDNA 2008 拆分标签,对「例子」执行 toASCII 得到字节序列 0x4F8B 0x5B50,再经 base32encode 得到「xn--fsq」;对「测试」同理得「xn--0zwm56d」。最终 Punycode 域名为「xn--fsq.xn--0zwm56d」。

输入中文域名例:例子.测试逐字符编码Punycode 算法添加前缀xn--输出xn--fsq.xn--0zwm56d输入 Punycodexn--fsq.xn--0zwm56d去除前缀解码 Punycode重组字符Unicode 字符输出例子.测试
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
问我手头有个中文域名,怎么用这个工具转成 xn-- 开头的格式?+
答

直接把完整的中文域名(比如 `例子.测试` 或 `百度.中国`)粘贴到输入框,点击转换即可。工具会自动识别域名中的非 ASCII 字符并转换成 Punycode(xn-- 前缀)。注意只输入域名本身,不需要加 `http://` 或路径。如果域名里同时包含中英文(如 `abc.公司`),英文部分会原样保留,只有中文部分被转换。

问转换出来的 xn-- 后面一串乱码,这是对的吗?+
答

对的。Punycode 编码后的字符串是 ASCII 字符的固定组合,看起来像乱码,但它是标准编码结果。比如 `xn--fsqu00a.xn--0zwm56d` 对应 `例子.测试`。每个 Punycode 段(两个 `.` 之间的部分)都唯一对应一个 Unicode 标签。如果担心转错了,可以点结果旁边的“反向转换”按钮或者把编码粘贴回输入框再转一次,看是否能还原成原来的中文。

问为什么我输入一个中文域名,它说“不支持的格式”或者没反应?+
答

最常见的原因是输入中包含了空格或特殊符号。Punycode 转换只处理域名标签(Label),也就是被 `.` 分隔的每一段。请检查输入:不要有前后空格;不要包含 `http://`、`www` 或路径(如 `/page`);确保只用了标准的英文句点 `.` 作为分隔符。另外,如果输入的是纯英文域名(如 `example.com`),工具会提示无需转换,因为纯 ASCII 域名本身不需要编码。

问这个转换是在我电脑上完成的还是会上传到你们服务器?+
答

所有转换都在浏览器本地完成,不会上传任何数据。本工具采用纯前端(FE)实现,Punycode 编码和解码逻辑直接运行在你的浏览器内。即使断网,页面加载后也能正常使用。输入的中文域名不会被发送到服务器,也不会有任何记录,适合处理敏感或内部使用的域名。

问我转出来的 xn-- 域名,是不是所有浏览器和系统都能正常访问?+
答

绝大多数现代浏览器(Chrome、Firefox、Edge、Safari)和操作系统都原生支持 Punycode 域名解析,直接在地址栏输入 xn-- 开头的域名可以正常访问。但少数老旧浏览器或某些网络环境(如企业防火墙)可能不支持。另外,邮箱客户端对 Punycode 的支持不一,如果要用在邮件链接里,建议保留中文形式或测试后再发送。

问这个工具跟浏览器地址栏里自动转的 Punycode 有什么区别?+
答

结果完全一致,都遵循 RFC 3492(IDNA)标准。本工具的价值在于:一是可以批量或单独查看编码后的字符串,方便复制到配置文件、DNS 记录或技术文档中;二是提供反向转换功能,能把 xn-- 串还原回中文,方便调试。浏览器地址栏虽然也能自动转,但只显示结果,不提供复制或反向查看的入口。

问中文域名转成 Punycode 后长度变长了,有没有长度限制?+
答

有。DNS 协议规定单个域名标签(Label)最长 63 个 ASCII 字符。中文转成 Punycode 后,每个汉字可能变成 4-6 个 ASCII 字符,所以一个中文域名标签最多只能包含约 10-15 个汉字。如果输入的中文标签转换后超过 63 字符,工具会提示错误。整个域名(含点)总长不超过 253 字符。这是 DNS 的硬性限制,所有 Punycode 工具都遵守。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭