Mar*_*ter 5 uri utf-8 ucs rfc3986
RFC 3986指定URI 的主机组件是"不区分大小写".但是,它没有指定"不区分大小写"在UCS或UTF-8字符方面的含义.
RFC中给出的示例(例如" <HTTP://www.EXAMPLE.com/>等于<http://www.example.com/>")允许我们推断"不区分大小写"意味着至少表示字符AZ被认为等同于UTF-8字符集中它们之前的字符32,即AZ.但是,没有提到应如何处理该范围之外的字符.因此,鉴于非编码,非标准化的注册名称www.OLÉ.com,我看到RFC允许的三种可能的标准化形式:
所以问题是:哪个是正确的?如果是情况1.,什么定义哪些字符被认为是大写,哪些字符被认为是小写(哪些字符没有大小写)?
DNS解析的主机名始终为小写。
\nDNS 主机名中不可能包含 UTF-8 字符(RFC 1123),但是,已经通过“国际化域名”实施了解决方法。此解决方法通常称为punycode。
\nPunycode 使非 ASCII 字符可以用 ASCII 字符表示。
\n\n\n非 ASCII 字符由主机名标签中允许的 ASCII 字符(字母、数字和连字符)表示。
\n
\n\n\n
至于您在问题( )中提供的示例,将解析的域名不是www.ol\xc3\xa9.comwww.ol % E9.com。
如果您的域名中出现百分号,则意味着您对主机名进行了 URL 编码,但这是不正确的,至少对于解析而言是不正确的。
\n例如,具有a如下所示的标签将正常工作:
<a href="//www.ol%C3%A9.com">Click Here</a>\nRun Code Online (Sandbox Code Playgroud)\n但是,DNS 服务器不会解析www.ol%C3%A9.com,而是将转换后的域名解析为 punycode:
www.ol%C3%A9.com\nRun Code Online (Sandbox Code Playgroud)\n变成
\nwww.ol\xc3\xa9.com\nRun Code Online (Sandbox Code Playgroud)\n在 punycode 中翻译为:
\nwww.xn--ol-cja.com\nRun Code Online (Sandbox Code Playgroud)\nWeb 浏览器通常会将大写字符转换为小写版本。例如, 和www.ol\xc3\xa9.com都www.ol\xc3\x89.com转换为相同的 DNS 主机名 ( www.xn--ol-cja.com),因为www.ol\xc3\x89.com已小写为www.ol\xc3\xa9.com。
我推荐两种工具来检查 IDN 域名,以了解域名经过 punycode 翻译后的样子:
\nVerisign 的 IDN 工具要严格得多。尝试使用这两个工具www.ol\xc3\x89.com作为输入,看看我的意思。
IDNA(应用程序国际化域名)的规则很复杂,但有两个主要的 RFC 值得一看:
\nrfc5894 第 3.1.3 节指定在以下情况下可能不允许使用字符:
\n\n\n\n
\n- 该字符是大写形式或通过 Unicode 大小写折叠映射到另一个字符的其他形式。
\n
| 归档时间: |
|
| 查看次数: |
754 次 |
| 最近记录: |