首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java -特殊URL字符

Java -特殊URL字符
EN

Stack Overflow用户
提问于 2012-01-10 06:15:01
回答 2查看 471关注 0票数 6

我有一个功能:

代码语言:javascript
运行
复制
public static ImageIcon GetIconImageFromResource(String path){
    URL url = ARMMain.class.getResource(path);
return new ImageIcon(url);
} 

它工作得很好,但是如果我把我的.JAR文件放到例如.JAR上,它就会失败,而且我看不到我的图标。我注意到我的网址是file:/C:/Ares!!!/myfile.jar!/com/test/images/img.png.所以在JAR扩展之后,就有了!符号!我认为这是主要原因!我怎样才能避免这个问题呢?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-10 08:16:22

这显然是Java的一个问题(不仅仅是一个bug)。JAR URL使用!/作为分隔符,但当它出现在文件路径中时不会转义。

您可以自己尝试逃离它,将Ares!!!/转换为Ares!!%21/,但是保持myfile.jar!/的原样。

根据RFC3986的说法,!是一个保留的子分隔字符。因此,使用它来分离URL中的不同部分是安全的;当它出现在一个部件中时,它必须作为%21转义

但是,处理JAR URL的Java代码显然遵循旧的RFC2396,其中!是一个无保留的字符。Java选择无保留的字符作为分隔符是不明智的。当它这样做时,它至少应该在内部摆脱它,就像保留了char一样。

票数 5
EN

Stack Overflow用户

发布于 2012-01-10 06:17:10

看看URLEncoder类。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8799296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档