问题标签 [idn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何将 IDN 转换为 ASCII?
将国际化域名转换为其 ASCII 格式的最佳方法是什么?
我想通过使用某种(免费).net 代码转换Bücher.ch
成。xn--bcher-kva.ch
php - 正确匹配 IDN URL
我需要帮助构建一个可以正确匹配自由文本中的 URL 的正则表达式。
- 方案
- 以下之一:ftp、http、https(ftps是协议吗?)
- 可选用户(和可选通行证)
- 主机(支持 IDN)
- 支持www和子域(支持 IDN)
- TLD 的基本过滤(
[a-zA-Z]{2,6}
我认为就足够了)
- 可选端口号
- 路径(可选,支持 Unicode 字符)
- 查询(可选,支持 Unicode 字符)
- 片段(可选,支持 Unicode 字符)
以下是我可以找到的有关子域的信息:
“子域”表示相对依赖,而不是绝对依赖:例如,wikipedia.org 包含 org 域的子域,而 en.wikipedia.org 包含域 wikipedia.org 的子域。理论上,这个细分可以下到 127 级深度,每个 DNS 标签最多可以包含 63 个字符,只要整个域名的总长度不超过 255 个字符。
关于域名本身,我找不到任何可靠的来源,但我认为非 IDN的正则表达式(我不确定如何编写 IDN 兼容版本)类似于:
有人可以帮我解决这个正则表达式或指出一个好的方向吗?
silverlight - 在不同域上显示 Silverlight 视频播放器的荒谬问题
我在显示来自不同 域的两部 Silverlight 电影时遇到问题。
它们都在 IIS 的绑定中,都被重定向到我的私人计算机/服务器,并且都将 silverlight 插件加载到浏览器中。
第一个域显示电影和 silverlight 的内容。第二个没有。
第一个域不包含 IDN 导致的 URL 重写。第二个可以。然而,这显然不应该造成问题。非常感谢您帮助解决此问题。
我对这个问题的看法是,Expression Encoder 的视频模板在默认情况下有一个错误,或者 silverlight 确实......你怎么看?
编辑:不仅 IDN 域上的 silverlight barf,堆栈溢出也是如此。那好!ASCII 等效项是 xn--framtidenshlsa-gib.se。
另外,我可能已经找到了 silverlight 呕吐的原因:
评论
您可以通过将这些选项作为参数传递给 GenericUriParser..::.GenericUriParser(GenericUriParserOptions) 构造函数来组合这些选项中的任何一个来配置通用 URI 解析器。
Silverlight 中现有的 System..::.Uri 类目前不支持应用于域名的国际资源标识符 (IRI) 或国际化域名 (IDN) 解析。
Silverlight 应用程序不能从 Uri 类派生新类。
有关 IRI 支持的更多信息,请参阅 System..::.Uri 类的备注部分。
javascript - IDN 感知工具,用于将人类可读的 IRI 编码/解码到有效 URI 或从有效 URI 解码
假设用户输入了某个资源的地址,我们需要将其翻译为:
HTML4 规范参考RFC 3986,它只允许主机部分中的 ASCII 字母数字字符和破折号,而其他部分中的所有非 ASCII 字符都应进行百分比编码。这就是我想在 href 属性中添加的内容,以使链接在所有浏览器中都能正常工作。IDN 应使用Punycode进行编码。
HTML5 草案是指RFC 3987,它还允许在主机部分中使用百分比编码的 unicode 字符,并在主机和其他部分中使用大量 unicode 子集,而无需对其进行编码。用户可以以任何这些形式输入地址。为了提供人类可读的形式,我需要解码所有可打印的字符。请注意,地址的某些部分可能与有效的 UTF-8 序列不对应,通常在目标站点使用其他字符编码时。
我想得到的一个例子:
是否有任何工具可以解决这些任务?我对 Python 和 JavaScript 库特别感兴趣。
更新:我知道有一种方法可以在 Python 和 JavaScript 中进行百分比和 Punycode(没有适当的规范化,但我可以忍受)编码/解码。整个任务需要更多的工作,并且存在一些陷阱(某些字符应始终编码或从不编码,具体取决于上下文)。我想知道是否有准备好使用库来解决整个问题,因为它似乎很常见并且现代浏览器已经进行了此类转换(尝试http://%D1%81%D0%B0%D0%B9%D1%82.%D1%80%D1%84/
在 Google Chrome 中输入,它将被替换为http://сайт.рф/
,但Host: xn--80aswg.xn--p1ai
在 HTTP 请求中使用)。
更新 2:Vinay Sajip指出 Werkzeug 具有正确处理大多数情况的 iri_to_uri 和 uri_to_iri 函数。到目前为止,我只发现了两种失败的情况:百分比编码的主机(很容易修复)和无效的 utf-8 序列(做得好有点棘手,但应该不是问题)。
我仍在寻找 JavaScript 中的库。写起来并不难,但我宁愿避免发明轮子。
unicode - IDN 主机标签中允许使用哪些 Unicode 字符?
我目前正在开发一个“正确”的 URI 验证器,目前这一切都归结为主机名验证;其余的并不那么棘手。
我被困在 IDN 主机名标签上(即,包含 Unicode;此时可能的 punycode 编码字符串已被解码)。
我的第一个想法基本上是一个用于不支持 IDN 的 TLD 的正则表达式,一个用于支持 IDN 的 TLD。这可能基于Mozilla 的启用 IDN 的 TLD 列表。分别,
^[a-zA-Z0-9\-]+$
和^[a-zA-Z0-9\-\p{L}]+$
。但是,这不是一个理想的情况,因为每个 IDN 注册商都可以决定允许哪些字符。
我正在寻找的是一个适当的、一致的、最新的数据表,其中包含各种 TLD 中允许的 Unicode 字符。看起来我必须自己在俄罗斯和中国的注册网站上找到所有数据(这非常困难)。
因此,在我自己尝试收集所有这些数据之前,我想知道这样的列表是否已经存在。还是有更好的方法、最佳/常见做法等?(我希望验证尽可能严格。)
php - 如何在 php 中对来自 IDN 的 URL 进行编码和解码?
我正在做一个网站来检查、注册等域,我必须使其符合 IDN。现在我有这样的事情:
我得到了这个:
testing123ásd123 xn--testing123sd123-wjb testing123ĂĄsd123
如您所见,解码后的字符串与原始字符串不同,我还尝试使用http://phlymail.com/en/downloads/idna/download/的类来执行此操作,并且得到相同的结果
我试过使用:
我得到了完全一样的(除了编码的字符串略有不同)
有任何想法吗?
编辑:问题解决了!在将字符串转换为 puny 代码时遇到此问题(在 PHP 中,使用 phlyLabs 的 punycode 字符串转换器) 原始字符串在 iso-8859-2 中并在 UTF-8 中解码,现在我需要找到如何使其成为 iso-8859- 2 再次,但谷歌可以帮助我。有什么模组吗?我该怎么处理这个问题?关闭它,删除它?就这样吧?
javascript - 如何使用 IDN 正则表达式匹配日文字符?
基于此帖子链接文本
我想出了一个用于 javascript 的正则表达式
这个匹配像这样的网址
http://google.com
http://www.google.com
google.com
它失败了google
,但是当我使用日文字符时功功.jp
它失败了。
www.功功.jp
http://www.功功.jp
http://功功.jp
这些匹配。我应该改变什么,这样功功.jp
也匹配。
ruby - 没有 www 时,ruby toUnicode fun 不会返回 idn 站点。在网址中
在我的 Rails 应用程序中,我将一个 idn url 转换为 punycode 并返回到 idn。
但如果我有这样的网址http://日本语.jp(没有 www.)
但尝试将其转换回 IDN 失败
如果我们只添加 www,toUnicode 会正确转换回来。到上面的 idn url,比如http://www.日本语.jp
我错过了什么吗?
php - PHP cURL 获取带有重音 URL 的内容
使用带有重音 URL 的 cURL,如果 CURLOPT_RETURNTRANSFER = true,我无法获取内容。
例子:
$html 是空的,有人有解决方案吗?
ruby - ruby idna.toUnicode 的乐趣,没有转换 tld 部分中的 punycode
我使用 Idna.toAscii 乐趣来转换网站名称 www.中国.中国(tld 也有 unicode 字符)。
结果是 www.xn--fiqs8s.xn--fiqs8s
我使用 Idna.toUnicode fun 将上述 punycode 转换回 unicode 字符。
但我只有 www.中国.xn--fiqs8s toUnicode 的乐趣是忽略了 tld 部分。
有没有办法克服这个问题?