Punycode 在国际化域名中的作用
在互联网早期,域名系统(DNS)仅支持 ASCII 字符集。随着全球互联网的发展,非英语母语用户需要使用本国语言的域名。为了在不修改现有 DNS 基础设施的前提下支持这些非 ASCII 字符(例如 ü、例 或 भारत),国际化域名(IDN)标准应运而生。
Punycode 是一种专门的传输编码语法。它能够将包含非 ASCII 字符的 Unicode 字符串,转换为完全由 ASCII 字符、数字以及连字符组成的受限表示形式。通过这种机制,浏览器和网络系统可以将多语言域名无缝解析为标准的 DNS 记录。
Punycode 标签的结构特征
所有经过 Punycode 编码的域名标签都具有特定的前缀结构。每个非 ASCII 标签在转换后,都会以 xn-- 开头。
例如,德语词汇 bücher 在经过 Punycode 编码后会变成 xn--bcher-kva。在这个结构中:
xn--是 ASCII 兼容编码(ACE)前缀,用于向 DNS 解析器声明该标签需要被解码为 Unicode。- 随后的字符是经过特定算法编码后的 ASCII 序列,它完整保留了原始 Unicode 字符及其在字符串中的位置信息。
域名与完整 URL 的区别
在使用本转换器时,必须严格区分域名(主机名)与完整的统一资源定位符(URL)。
- 域名/主机名:指网络主机的具体名称,例如
bücher.example或xn--bcher-kva.example。 - 完整 URL:包含传输协议(如
https://)、端口号、目录路径、查询参数或网页片段(如?query=1#fragment)。
本工具仅对域名进行 Punycode 转换。输入内容中如果包含协议头、路径或参数,将导致解析失败。
转换规则与输入限制
为了确保转换结果符合 DNS 规范,输入数据必须遵循以下格式要求与限制:
- 字符长度限制:输入内容的最大长度限制为 10,000 个字符。
- 禁止的格式:输入中不得包含空格、空标签(例如连续的两个点
..)、标签开头或结尾的连字符(如-example.com或example-.com)。 - 单末尾点保留:工具支持并会保留域名末尾的单个点(例如
example.com.)。 - 长度溢出:转换后的单个域名标签如果超过 DNS 规定的长度限制,将被判定为无效输入。
浏览器本地处理与隐私保护
本工具在设计上完全保障用户的隐私。所有的域名转换计算均在用户的浏览器本地完成,没有任何数据会被上传到 BroBroGo 服务器。
当你在输入框中键入或粘贴文本时,JavaScript 脚本会立即在本地执行转换逻辑并输出结果。
常见问题解答
Punycode 用来做什么?
Punycode 可以把含有 ü、例、भारत 等字符的域名表示成以 xn-- 开头的 ASCII 标签。
可以粘贴完整 URL 吗?
请只输入主机名或域名,例如 bücher.example 或 xn--bcher-kva.example,不要带 https://、路径、查询参数或片段。
为什么我的域名被拒绝?
合法主机名不能包含空格、空标签、标签开头或结尾的连字符,也不能在转换后超过标签长度限制。