URI中的非法字符

麦可

java.net.URI构造函数接受大多数非ASCII字符,但不接受表意空间(0x3000处)。ctor失败并显示java.net.URISyntaxException: Illegal character in path ...

所以我的问题是:

  • 为什么URIctor0x3000接受但接受其他非ASCII字符?
  • 它不接受其他哪些字符?
斯蒂芬·C

请注意,第一个示例包含表意空间而不是常规空间。

问题在于表意空间。

这是允许使用非ASCII字符的代码:

        } else if ((c > 128)
                   && !Character.isSpaceChar(c)
                   && !Character.isISOControl(c)) {
            // Allow unescaped but visible non-US-ASCII chars
            return p + 1;
        }

如您所见,它禁止“笨拙”的不可见字符。

另请参见URIjavadocs,它指定URI的每个组件中允许(由类!)使用的字符。

为什么?

这可能是一种安全措施。

还有哪些其他不允许的内容?

根据各个Character谓词方法,为空白字符或控制字符...。(有关详细说明请参见Character javadocs。)

你还应该注意,这是一个偏差从URI规范。URI规范规定仅在以下情况下才允许使用非ASCII字符:

  • 将UCS字符代码转换为UTF-8,并
  • 百分比按照规范要求对UTF-8字节进行编码。

我的理解是,URI.toASCIIString()如果您有“异常”java.net.URI对象,则方法将解决此问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

处理xslt包含中的非法URI字符

来自分类Dev

URI的所有部分中是否存在非法字符?

来自分类Dev

JavaScript中的非法字符

来自分类Dev

URISyntaxException查询中的非法字符

来自分类Dev

HtmlAgilityPack:路径中的非法字符

来自分类Dev

路径中的 WIX 非法字符

来自分类Dev

在路径中找不到非法字符

来自分类Dev

C#-路径中的非法字符

来自分类Dev

测试路径:路径中的非法字符

来自分类Dev

使用*的StreamReader路径-路径中的非法字符

来自分类Dev

System.ArgumentException:路径中的非法字符

来自分类Dev

c#MVC路径中的非法字符

来自分类Dev

文件路径中的C#非法字符

来自分类Dev

为什么路径中包含非法字符?

来自分类Dev

使用Powershell路径中的非法字符

来自分类Dev

powershell复制项路径中的非法字符

来自分类Dev

BinScope和ArgumentException:路径中的非法字符

来自分类Dev

c#MVC路径中的非法字符

来自分类Dev

ZipFile.ExtractToDirectory“路径中的非法字符”

来自分类Dev

网址索引处查询中的非法字符

来自分类Dev

文件路径中的C#非法字符

来自分类Dev

Laravel中的非法字符串偏移

来自分类Dev

测试路径:路径中的非法字符

来自分类Dev

Javascript SyntaxError:addEventListener行中的非法字符

来自分类Dev

C#WebClient:链接中的非法字符

来自分类Dev

Mule:索引路径中的非法字符

来自分类Dev

请放心:路径中存在非法字符

来自分类Dev

检查字符串中路径中的非法字符

来自分类Dev

检查字符串中是否包含非法字符