问题标签 [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.

0 投票
3 回答
4894 浏览

c# - 如何将 IDN 转换为 ASCII?

将国际化域名转换为其 ASCII 格式的最佳方法是什么?

我想通过使用某种(免费).net 代码转换Bücher.ch成。xn--bcher-kva.ch

0 投票
3 回答
2699 浏览

php - 正确匹配 IDN URL

我需要帮助构建一个可以正确匹配自由文本中的 URL 的正则表达式。

  • 方案
    • 以下之一:ftphttphttpsftps是协议吗?)
  • 可选用户(和可选通行证
  • 主机(支持 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 兼容版本)类似于:

有人可以帮我解决这个正则表达式或指出一个好的方向吗?

0 投票
1 回答
209 浏览

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 类的备注部分。

0 投票
1 回答
1868 浏览

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 中的库。写起来并不难,但我宁愿避免发明轮子。

0 投票
2 回答
2227 浏览

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 字符。看起来我必须自己在俄罗斯和中国的注册网站上找到所有数据(这非常困难)。

因此,在我自己尝试收集所有这些数据之前,我想知道这样的列表是否已经存在。还是有更好的方法、最佳/常见做法等?(我希望验证尽可能严格。)

0 投票
1 回答
6144 浏览

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 再次,但谷歌可以帮助我。有什么模组吗?我该怎么处理这个问题?关闭它,删除它?就这样吧?

0 投票
1 回答
739 浏览

javascript - 如何使用 IDN 正则表达式匹配日文字符?

基于此帖子链接文本

我想出了一个用于 javascript 的正则表达式

这个匹配像这样的网址

  • http://google.com
  • http://www.google.com
  • google.com

它失败了google,但是当我使用日文字符时功功.jp它失败了。

  • www.功功.jp
  • http://www.功功.jp
  • http://功功.jp

这些匹配。我应该改变什么,这样功功.jp也匹配。

0 投票
1 回答
158 浏览

ruby - 没有 www 时,ruby toUnicode fun 不会返回 idn 站点。在网址中

在我的 Rails 应用程序中,我将一个 idn url 转换为 punycode 并返回到 idn。

但如果我有这样的网址http://日本语.jp(没有 www.)

但尝试将其转换回 IDN 失败

如果我们只添加 www,toUnicode 会正确转换回来。到上面的 idn url,比如http://www.日本语.jp

我错过了什么吗?

0 投票
1 回答
3839 浏览

php - PHP cURL 获取带有重音 URL 的内容

使用带有重音 URL 的 cURL,如果 CURLOPT_RETURNTRANSFER = true,我无法获取内容。

例子:

$html 是空的,有人有解决方案吗?

0 投票
1 回答
281 浏览

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 部分。

有没有办法克服这个问题?