首页 > 解决方案 > 带有元音变音 (ü) 的域上的 location.href 报告不同的域

问题描述

访问以下域: https://obs.bürgerhaus.de

在浏览器控制台中,如果我选中document.location.href,我会返回以下内容:

> document.location.href
"https://obs.xn--brgerhaus-q9a.de/"

为什么这个值与实际域不同?这是某种类型的 url 编码还是什么?如何获得带有变音符号的原始域?

标签: javascriptcharacter-encodingdomain-name

解决方案


执行查找服务以将用户友好名称转换为网络地址以定位 Internet 资源的域名系统在实践1中被限制为使用 ASCII 字符,这是最初为可接受的域名设​​定标准的实际限制。

(见:https ://en.wikipedia.org/wiki/Internationalized_domain_name )

正如文章所说,我们每天使用的域在技术上仅限于 ASCII 字符,以支持更多字符 unicode 域被编码为所谓的Punycode(参见 RFC:https ://www.ietf.org/rfc/rfc3492.txt )

访问带有元音变音(或类似)的网站将迫使浏览器对其进行编码。例如,http://öbb.at转换为http://xn--bb-eka.at。转换后的形式称为 ASCII 兼容编码 (ACE),由四个字符前缀 (xn--) 和 Unicode 字符的 punycode 表示组成。在此处查看更多详细信息...

要将其解析回来,您可以查看:

GitHub 上的 Punycode JS

一些解决方案 - StackOverflow


推荐阅读