中文域名转换:Unicode 与 Punycode 在线互转
一句话:DNS 只认字母、数字和连字符,中文域名在解析、注册局和证书里都以 xn-- 开头的 Punycode 形式存在,例如 中国 = xn--fiqs8s。输入中文域名得到 Punycode,输入 xn-- 编码还原成中文,两个方向自动识别,并按 IDNA2008 规范逐段校验。
最后更新: · 标准:RFC 3492 / IDNA2008 / UTS #46
示例:中文网.中国 · 百度.com · xn--fiqs8s · münchen.de · xn--fiq228c5hs.xn--fiqs8s
Punycode 是什么
域名系统诞生时只支持 ASCII 字母、数字和连字符。为了让中文、日文、阿拉伯文等文字也能作为域名,IETF 制定了 IDNA 标准:浏览器把每一段非 ASCII 的标签用 Punycode(RFC 3492)编码,再加上 xn-- 前缀。比如 中文网.中国 实际上是 xn--fiq228c5hs.xn--fiqs8s。转换是按“段”(两个点之间的部分)进行的,纯英文的段保持不变,所以 百度.com 会变成 xn--wxtr44c.com。
哪些场景要用 xn-- 形式
- DNS 解析:在 DNSPod、阿里云解析、Cloudflare 添加中文域名时,部分后台要求填写 Punycode。
- 服务器配置:Nginx 的
server_name、Apache 的ServerName必须写 xn-- 形式。 - SSL 证书:证书里的域名(SAN)以 Punycode 存储,申请和检测时用 xn-- 形式最稳妥。
- 邮件、API 与程序:大多数编程语言的网络库只接受 ASCII 主机名。
本工具在服务器端用 IDNA2008 规则计算,不保存你输入的内容。也可以直接在本站 WHOIS 查询 输入中文域名,或到 域名后缀大全 查看 .中国、.公司 等中文后缀。
常见问题
什么是 Punycode?为什么中文域名要转换?
DNS 系统只支持字母、数字和连字符(ASCII),中文、日文、德文变音字母等非 ASCII 字符不能直接写进 DNS。Punycode(RFC 3492)把这些字符编码成以 xn-- 开头的 ASCII 字符串,例如“中国”对应 xn--fiqs8s。浏览器显示中文,实际解析和注册局记录的都是 xn-- 形式。
中文域名在解析、备案、申请 SSL 证书时填哪种形式?
在 DNS 解析后台、Nginx 的 server_name、申请 SSL 证书和大部分 API 中,应填写 xn-- 开头的 Punycode 形式;注册、WHOIS 查询和备案系统一般两种都能识别。本站 WHOIS 查询同时支持直接输入中文域名。
IDNA2008 和 IDNA2003 有什么区别?
IDNA2008(RFC 5890–5893)是现行标准,比 2003 版更严格:不允许 emoji 和大部分符号,德文 ß、希腊文 ς 不再被映射成 ss、σ。本工具按 IDNA2008 校验,并用 UTS #46 做兼容映射(如全角字母转半角、大写转小写),与主流浏览器的处理方式一致。
为什么有的字符提示“不允许”?
IDNA2008 只允许各语言的字母和数字。空格、下划线、标点、emoji、零宽字符等会被拒绝;从右往左书写的文字(阿拉伯文、希伯来文)还要满足双向文字规则。另外,每一段(两个点之间)编码后不能超过 63 个字符,整个域名不能超过 253 个字符。
能不能注册中文域名?哪些后缀支持?
可以。.中国、.公司、.网络 等中文顶级域,以及 .cn、.com、.net 等大多数后缀都支持注册中文主体的域名,但具体允许哪些文字由各注册局决定。可以在“域名后缀大全”里查看后缀的注册局,再到注册商确认。