WMW

Punycode转换器

Free

在 Unicode 和 Punycode(RFC 3492,用于国际化域名的纯 ASCII 编码)之间转换文本,提供完整域名模式(识别点号,自动处理 xn-- 前缀)和纯标签模式,可一次批量转换多行。

完全在您的浏览器中运行。不会上传任何内容。

最近活动

所有人可见。所有访客的最近 20 次使用记录,最新的在前。

Converted 1 line(s) (domain, to Unicode)

4 小时前

Converted 1 line(s) (domain, to Punycode)

4 小时前

Converted 1 line(s) (domain, to Punycode)

4 小时前

Converted 1 line(s) (domain, to Unicode)

4 小时前

Converted 1 line(s) (domain, to Unicode)

4 小时前

Converted 1 line(s) (domain, to Punycode)

4 小时前

Converted 1 line(s) (plain text label, to Punycode)

4 小时前

Converted 2 line(s) (plain text label, to Punycode)

4 小时前

Converted 2 line(s) (domain, to Unicode)

4 小时前

Converted 2 line(s) (domain, to Punycode)

4 小时前

Converted 2 line(s) (domain, to Punycode)

4 小时前

评论 (0)

觉得这个工具有用吗?留下评论、分享一个小技巧,或者告诉我们如何改进它。

访客评论在发布前会经过审核。 登录 即可立即发布。

暂无评论,快来抢沙发分享您的想法吧!

此工具的功能

此工具可在 Unicode 和 Punycode(用于国际化域名的纯 ASCII 编码)之间转换文本。粘贴一个或多个域名或单词,选择一个方向,即可获得即时的逐行转换,可选择完整域名模式(识别点号,自动处理 xn-- 前缀)或纯标签模式(用于原始编码或解码字符串)。

工作原理

Punycode 实现了 RFC 3492 中的 Bootstring 算法:它将字符串中已有的 ASCII 字符与非 ASCII 字符分开,先写出 ASCII 部分并在后面加一个连字符,然后使用字母 a-z 和数字 0-9,将每个非 ASCII 字符的位置和码点编码为一系列广义可变长度整数。在域名模式下,每个以点分隔的标签都会独立编码或解码,并自动添加或去除 xn-- 前缀,这与真实的国际化域名在 DNS 中的存储方式和浏览器显示方式之间的对应关系完全一致。

解决的问题

常见问题

›Punycode 到底是用来做什么的?

域名在官方上只能包含 ASCII 字母、数字和连字符,但人们需要各种文字和语言的域名。Punycode 是(在 RFC 3492 中定义的)编码方式,它将任何 Unicode 文本表示为带有 xn-- 前缀的 ASCII 字符串,因此像 münchen.de 这样的域名在底层会变成 xn--mnchen-3ya.de,而浏览器仍会向用户显示 Unicode 版本。

›“域名”模式和“纯文本标签”模式有什么区别?

域名模式与互联网上实际发生的情况一致:它按点分割,保留纯 ASCII 标签不变,仅在需要的标签上添加或移除 xn-- 前缀,因此像 café.example.com 这样的完整主机名会逐个标签正确转换。纯文本标签模式会对您提供的确切字符串运行原始 Punycode 算法,不进行按点分割,也不添加 xn-- 前缀,适用于您已从其他工具或 RFC 3492 测试向量获得一个裸编码标签的情况。

›为什么转换回 Unicode 有时会失败?

Punycode 解码只有在编码字符串格式正确时才能成功;如果某一行不是有效的 Punycode,或域名模式下某一行的标签实际上并非以 xn-- 开头,则该行无法解码,并会报告为错误,而输入的其余部分仍会正常转换。

›我可以一次转换多个域名或单词吗?

是的,将每个域名或标签放在单独一行;输出文本框会逐行镜像输入内容,因此输出的第 3 行始终是输入第 3 行的转换结果。

›这与真实浏览器使用的算法相同吗?

是的,此工具使用广泛使用的 punycode.js 库(多年来内置于 Node.js 本身的 Punycode 实现的现代继任者),精确实现了 RFC 3492 中的 Bootstring 算法,这与每个主流浏览器在地址栏中显示 Unicode 域名时所遵循的规范完全相同。

相关工具