问题标签 [iri]

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 投票
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 投票
1 回答
1048 浏览

c# - RSS 提要验证:IRI 找到了预期的 URL - 如何将 IRI 链接转换为有效的 URL?

我创建了一个 RSS 提要,其中包含非 ASCII 字符 URL (IRI)。这就是为什么它不使用Feed 验证器进行验证的原因。

验证有多重要?据我所知,这或多或少是对传统 RSS 阅读器的验证?

无论如何,我想知道如何在 C# 中将 IRI 转换为 URL?

0 投票
1 回答
835 浏览

url - IRI-to-URI/URI-to-IRI转换算法

是否有任何开源算法可以将 IRI 转换为 URI 并将 URI 转换为 IRI?

AC# 实现是可取的,但不是必需的。

0 投票
1 回答
253 浏览

rdf - Xpointer 是无效的 IRI?

我正在尝试使用 Jena 框架处理 RDF的工具 ( Elda )。

我收到了这个错误:

错误 [qtp1415899750-24] (RouterRestlet.java:332) - 异常:第 7 行,第 72 列:com.hp.hpl.jena.iri.impl.IRIImplException:代码:片段中的 0/ILLEGAL_CHARACTER:字符违反语法规则对于 URI/IRI。

它说以下 URL 不是有效的 IRI。

http://burckhardt.netseven.it/show_annotable_transcription?id=12#xpointer(start-point(string-range(//DIV[@about='http://burckhardt.netseven.it/show_annotable_transcription?id=12' ]/DIV[1]/BLOCKQUOTE[1]/P[1]/text()[1],'',13))/range-to(string-range(//DIV[@about='http:// /burckhardt.netseven.it/show_annotable_transcription?id=12']/DIV[1]/BLOCKQUOTE[1]/P[1]/text()[1],'',27)))

我知道它很丑,但据我所知,它符合 XPointer 规范......而且我在其他环境中成功使用它(例如 Sesame Triplestore)。

有人知道其中有什么问题吗?

谢谢你

基督教

0 投票
0 回答
222 浏览

.net - Uri 类和 IRI

在解析 IRI 时,我在 .net 中的 Uri 类中苦苦挣扎。

考虑这个 IRI:

当我从中创建和 Uri 时(无论 iri 解析设置如何),我得到以下信息:

uri.AbsolutUri 返回的实际值是:

似乎 Uri 类按照 RFC3986 而不是 RFC3987 规范中的描述工作(尽管msdn说了别的)。我需要 Uri#AbsoluteUri 返回根据后者转义的正确字符串表示形式。

为什么会这样?有什么办法可以改变这种行为?

0 投票
1 回答
1666 浏览

uri - Jena SDB IRI 验证

我有几个奇怪的 IRI 想要插入 Jena SDB,但我收到了一些错误消息:

  1. http://example.org/text/1234#offset_2311_2317_10-12%
    错误消息是:
    代码:片段中的 30/ILLEGAL_PERCENT_ENCODING:主机组件出现百分比,后面没有两个十六进制数字。
  2. http://example.org/text/5678#offset_365_370_NDZ#2
    错误消息是:
    代码:0/ILLEGAL_CHARACTER in FRAGMENT:该字符违反了 URI/IRI 的语法规则。
  3. http://example.org/text/7890#offset_8872_8878__ “Fren
    错误消息是:
    代码:4/UNWISE_CHARACTER in FRAGMENT:该字符与 URI/IRI 的语法规则不匹配。这些字符在 RDF URI 引用、XML 系统中是允许的标识符和 XML Schema anyURI。

字符串 10-12%, NDZ#2 和 _"Fren 是从纯文本文档中提取的,我必须将其直接附加在 IRI 的后面。所以我的问题是:它们是有效的 IRI 吗?如果不是,考虑到我需要要在 IRI 后面附加纯文本,如何将它们转换为有效的 IRI?

0 投票
1 回答
783 浏览

javascript - 是否在 JavaScript 中完成了 RFC3987(IRI 验证)实现?

是否有在 JavaScript 中完成的RFC3987(国际化资源标识符)实现,以便我可以使用它来检查字符串是否是有效的 IRI?我需要它用于使用 NodeJS 完成的脚本。

我知道 HTML 不支持 IRI 链接,但我不用于检查 HTML 文档。

0 投票
1 回答
454 浏览

java - IRI 中是否允许有空格?

我正在使用 Java 的 URI 类来验证 IRI 是否正确。根据文档,URI 可以输出一个 IRI 字符串,它同样可以从一个 IRI 字符串构造。我有一种情况,我得到的 IRI 包含空格并且 URI 抛出异常(有问题的 IRI 是http://My IRI Test)。

查看RFC,似乎不允许使用空格,但我想确认一下。

0 投票
1 回答
344 浏览

rdf - 为什么 OWL API 的 RDFXMLParser 不能用两个哈希值解析 IRI?

我正在尝试使用 OWL API 加载本体。

资源的 IRI 之一是http://example.com/#1#2'.

发生以下异常:

如果我将该 IRI 更改为http://example.com/#1',那么一切都很好。

为什么 OWL API 的 RDFXMLParser 不能用两个哈希值解析 IRI?

0 投票
1 回答
133 浏览

debugging - IRI 验证,编码 <> 符号意外失败

我在我的项目中使用 abdera,它在从包含已编码 < 和 > 符号的内容中解析 IRI 地址时失败:&gt; &lt;
例外是:“org.apache.abdera.i18n.text.InvalidCharacterException: Invalid Character 0x3c(<) "

我很困惑,因为我知道&gt; &lt;IRI 格式中允许使用这些符号 ( )。

您能否提一些建议

编辑:我正在使用 org.apache.abdera.model.Link 类的 getHref() 方法,链接类似于:http://blabla.com?xxx&gt;yyy&lt;zzz