编码加密 · Base 系列

Punycode

中文域名↔xn--形式

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

关于本工具

About

在浏览器地址栏粘贴一串 `xn--4gq094i` 时,多数人不知道这对应的是哪个中文域名。这个工具在输入框接收中文域名或 Punycode 编码,即时完成互转,并显示转换后的完整结果。转换逻辑完全在浏览器内执行,输入的域名不会离开本地设备。

使用场景

壹

国际域名注册

外贸公司为德国市场注册域名,业务员拿到的是德语单词「straße」,但注册商后台只认 ASCII 字符。他需要把「straße」转成 Punycode 后填入系统,否则提示非法字符。本工具实时转码,秒出「xn--strae-oqa」,避免因格式错误被注册商驳回,错过首选的域名。

贰

邮件客户端配置

企业邮箱管理员收到一封退回信,发件人地址是「张三@中文域名.cn」。Outlook 报错说地址包含不支持的字符,无法投递。他需要把发件人地址中的中文域名部分转成 Punycode 格式,然后重新配置发件规则。本工具一次转换整个域名,不必手动逐段编码,确保邮件系统能正确识别路由。

叁

浏览器兼容性测试

前端工程师开发了一个支持中文域名的网站,测试时发现 Chrome 地址栏输入「测试.com」能正常访问,但 IE11 直接跳转搜索页。他需要用 Punycode 形式「xn--0zwc56a.com」验证旧版浏览器的处理逻辑。本工具提供双向转换,方便他快速生成测试用例,定位到底是浏览器不解析还是后端重定向有问题。

肆

CDN 配置白名单

网站运维在 Cloudflare 后台添加域名白名单,复制粘贴了中文域名「安全防护.cn」,系统提示「Invalid hostname」。客服要求必须输入 ASCII 兼容编码。他需要把中文域名转成 Punycode 后重新提交。本工具转换结果可直接粘贴到 CDN 配置框,省去手动查 RFC 3492 编码表的麻烦。

伍

SSL 证书签发验证

系统管理员为「中国银行.cn」申请 HTTPS 证书,CA 机构要求验证域名所有权。验证文件需要放在指定路径下,但路径中包含中文域名,服务器上目录名必须用 Punycode。他需要把中文域名转码后,在 Nginx 配置里写对 location 块,否则验证请求 404。本工具确保他填写的路径与 CA 服务器请求的路径一致。

第二节

使用指南

Getting Started

使用步骤

  1. 1在输入框粘贴中文域名(如 `中文.中国`)或 `xn--` 形式字符串,右侧实时显示对应的编码或解码结果
  2. 2点击结果区域任意一行(编码或解码结果),自动复制到剪贴板,页面出现「已复制」提示
  3. 3若输入非法字符(如空格、特殊符号),结果区显示红色错误提示,不产生输出

输入输出示例

输入输出说明
中文.中国xn--fiq228c.xn--fiqs8s常规:常见中文域名转码,验证主流汉字和顶级域名的编码结果
xn--fiq228c.xn--fiqs8s中文.中国常规:反向解码,验证双向转换一致性
你好世界.comxn--6qq79v37d.com常规:四个汉字组合,验证多字符连续编码
a.b.ca.b.c边界:纯 ASCII 输入,工具应原样返回,不添加 xn-- 前缀
xn--xn--边界:仅前缀无有效编码,工具应保持原样或报错,不误解码
中文.中国(带空格)xn--fiq228c.xn--fiqs8s(输入空格被自动去除)易错:用户常粘贴含空格或不可见字符的域名,工具应自动清理
xn--abc123.xn--def456(解码失败,返回原始输入或提示无效编码)易错:无效 punycode 序列(如非法字符组合),工具应明确反馈而非静默错误

常见错误对照

1.直接粘贴带协议头的完整URL

✗ 错误https://www.例子.中国
✓ 修复www.例子.中国

Punycode转换只处理域名部分,协议头(http://)和路径(/page)不属于IDN编码范围,粘贴完整URL会导致转换失败或截断。

2.混淆Punycode编码与URL编码

✗ 错误输入 %E4%B8%AD%E5%9B%BD 期望转成 xn--fiqs8s
✓ 修复输入 中国

Punycode(RFC 3492)是将Unicode字符转为ASCII的IDN编码,而%XX是URL百分号编码(RFC 3986),两者完全不同的编码体系。

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

✗ 错误例子 .中国(域名和点之间有空格)
✓ 修复例子.中国

域名标签之间只能有单个点分隔,空格、制表符、零宽空格等不可见字符会导致ACE前缀检测失败,输出乱码或无法解码。

4.对纯ASCII域名进行编码

✗ 错误输入 google.com 期望得到 xn--google-xxx
✓ 修复输入 google.com → 输出仍为 google.com

Punycode只对包含非ASCII字符的域名标签进行编码。纯ASCII域名(如google.com)本身已是合法DNS格式,不会触发编码转换。

5.忽略大小写敏感性误解

✗ 错误输入 xn--FIQS8S 解码后认为结果应为大写
✓ 修复输入 xn--fiqs8s 或 xn--FIQS8S 都解码为 中国

Punycode编码不区分大小写(RFC 3492 §3.1),但解码结果始终为小写Unicode。域名解析时大小写不敏感,但显示习惯为小写。

6.误以为所有中文域名都转成相同前缀

✗ 错误认为 例子.中国 和 例子.公司 都转成 xn--fsq
✓ 修复例子.中国 → xn--fsq831a.xn--fiqs8s;例子.公司 → xn--fsq831a.xn--55qx5d

每个顶级域(TLD)有独立的Punycode编码。.中国对应 xn--fiqs8s,.公司对应 xn--55qx5d,不同TLD编码结果完全不同。

7.将编码结果用于非DNS场景

✗ 错误把 xn--fsq831a 当作通用编码用在文件名或密码中
✓ 修复仅在DNS解析、浏览器地址栏、邮件服务器配置等IDN场景使用

Punycode是DNS专用编码(RFC 5891),用于国际化域名解析。在其他场景使用可能导致兼容性问题或安全风险(如同形异义字攻击)。

第三节

工作原理

How It Works

核心公式

ACE = ToASCII(U-label) 或 ToUnicode(A-label)

变量说明

  • U-labelUnicode 编码的中文域名
  • A-labelASCII 编码的 xn-- 域名
  • ToASCIIRFC 3491 定义的编码算法
  • ToUnicodeRFC 3491 定义的解码算法

示例

输入中文域名「全宝工具站.中国」,先执行 Nameprep 规范化(NFKC 归一化),再按 Punycode 算法编码:将每个汉字转为 Unicode 码点(如「全」= 0x5168),按 Base-32 变长编码规则压缩,最终输出 A-label = xn--6qqx7b7a7b7a7b7a.xn--fiqs8s。

输入中文域名例:例子.测试Punycode 编码浏览器内 JavaScript 计算输出 xn-- 形式例:xn--fsq.xn--0zwm56d反向解码流程输入 xn-- 域名Punycode 解码还原中文域名
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
问我直接输入 baidu.com 为啥转出来不是 xn-- 开头的?+
答

Punycode 只转换包含非 ASCII 字符(中文、日文、特殊符号等)的域名。纯英文字母或数字的域名不需要编码,所以输入 baidu.com 会原样返回。只有像「百度.com」这样的中文域名才会被转成 xn--百度-3k8.com 格式。如果想把纯英文域名硬转成 Punycode,那不符合 RFC 3492 标准,工具不会做无效转换。

问xn-- 开头的域名浏览器真的能打开吗?+
答

能。Punycode 是国际域名(IDN)的标准化编码,主流浏览器(Chrome、Edge、Firefox、Safari)都内置了解码功能。在地址栏粘贴 xn--百度-3k8.com 这类格式,浏览器会自动解码并跳转到对应中文域名。不过部分老旧浏览器或命令行工具可能不完整支持,建议用最新版本浏览器。

问为什么有的中文域名转换出来特别长,有的短?+
答

Punycode 长度取决于原始中文字符的 Unicode 码点。每个汉字编码后变成 4-6 个字母数字组合,所以汉字越多、笔画越复杂的字(如「龘」),转换结果越长。RFC 3492 规定 Punycode 结果不能超过 63 个字符,超出部分会被截断(但极少发生)。如果域名包含多个汉字,建议先在本工具预览转换后的长度,确保不超过浏览器限制。

问这个工具会把我输入的域名上传到服务器吗?+
答

不会。工具实现方式是纯前端(FE),所有转换逻辑在你浏览器本地运行,不经过任何后端服务器。输入的域名不会离开你的设备,也不会有日志记录。即使断网,只要页面已加载,也能正常转换。隐私敏感场景(如内部系统域名、未公开的测试域名)可以放心使用。

问我复制转换后的 xn-- 结果粘贴到记事本,发现最后多了一个点,怎么回事?+
答

这是标准域名格式的根区点(root zone dot)。完整域名末尾应该有一个点表示根域(如 baidu.com.),但日常使用中省略。本工具转换结果默认不带末尾点,如果你粘贴后出现多余点,可能是复制时包含了其他字符(如空格、换行)。建议直接复制工具输出框的纯文本,不要手动补全或修改。

问为什么有的中文域名转换后是乱码,不是 xn-- 格式?+
答

如果输入的不是标准中文字符(如全角符号、繁体异体字、Unicode 控制字符),转换结果可能看起来像乱码,但仍然符合 Punycode 标准。例如输入「·」(中间点)这种非 ASCII 字符,会被编码成 xn--xxx。解决办法:确保输入的是标准简体中文汉字(GB2312 范围内),避免使用特殊符号或生僻字。本工具对输入字符有实时校验,非法字符会标红提示。

问这个工具和浏览器地址栏自动转换有什么区别?+
答

浏览器地址栏只在你输入中文域名并回车时自动转换,不会显示 Punycode 原文。本工具提供双向转换:中文→xn-- 和 xn--→中文,方便调试、记录或粘贴到不支持中文的旧系统。例如,你在服务器配置文件中需要写 Punycode 形式的域名,或者从第三方日志里看到 xn-- 格式想还原中文,就必须用这类专门工具。

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

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