使用Java URL解析具有Unicode字符的Wikipedia URL时出错
||
我在获取包括unicode的Wikipedia网址时遇到了麻烦!
给定页面标题,例如:1992 \\ u201393_UE_Lleida_seasonnow
只是普通网址...
http://en.wikipedia.org/wiki/1992\\u201393_UE_Lleida_seasonnow
使用URLEncoder(设置为UTF-8)...。
http://en.wikipedia.org/wiki/1992%5Cu201393_UE_Lleida_seasonnow
当我尝试解析任一URL时,我什么也没得到。如果将URL复制到浏览器中,我什么也没得到-仅当我真正复制Unicode字符时才得到页面。
维基百科是否有某种奇怪的方式来在url中编码unicode?还是我只是在做一些愚蠢的事情?
这是我正在使用的代码:
URL url = new URL(\"http://en.wikipedia.org/wiki/\"+x);
System.out.println(\"trying \"+url);
// Attempt to open the wiki page
InputStream is;
try{ is = url.openStream();
} catch(Exception e){ return null; }
没有找到相关结果
已邀请:
4 个回复
琶竞捆栓
URI类可以帮助您完成以下序列: 只要RFC 2396允许转义的八位位组,即在用户信息,路径,查询和片段组成部分以及在权限组成部分(如果权限基于注册表)中,都可以使用其他类别的字符。这允许URI包含除US-ASCII字符集中的Unicode字符。
您可以在此处阅读有关URI编码的更多信息。
雄鞋谋塘
其中包括Unicode破折号,它等效于URI:
您可以在链接中包含IRI表单,该表单将在现代浏览器中运行。但是许多网络库(包括Java以及旧版浏览器)都需要纯ASCII URI。 (即使您已使用编码后的URI版本链接到它,现代浏览器仍会在地址栏中显示漂亮的IRI版本。) 通常,要将IRI转换为URI,请在主机名上使用IDN算法,并对所有其他非ASCII字符进行URL编码为UTF-8字节。在您的情况下,应为:
注意:要使
的值带有空格,必须将
替换为
。
像在查询字符串中一样进行as11 query编码。但是在这样的路径URL段中,
-means-space规则不适用。路径中的空格必须使用Normal-URL-encoding编码为“ 8”。 再说一次...在特定的Wikipedia案例中,出于可读性考虑,它们用下划线代替空格,因此最好将
替换为ѭ15。
版本仍然可以使用,因为它们从那里重定向到下划线版本。
才脊烽馈低
该算法使用以下答案编写,用于字符串拆分和检测Unicode字符
氮顺
请参阅此答案以进行澄清。