【发布时间】:2016-01-06 16:35:33
【问题描述】:
当我尝试使用 apache http 客户端执行 get 请求时
http://www.shutterstock.com/cat.mhtml?searchterm=иь
效果很好,但是当我尝试时
http://www.shutterstock.com/cat.mhtml?searchterm=ь
我收到URISyntaxException
完整的堆栈跟踪作为屏幕截图,因为我无法在Ñ之后粘贴第二个符号:
另一个成功的网址:
http://www.shutterstock.com/cat.mhtml?searchterm=сиськи
http://www.shutterstock.com/cat.mhtml?searchterm=сиськиа
http://www.shutterstock.com/cat.mhtml?searchterm=сись
http://www.shutterstock.com/cat.mhtml?searchterm=ф
另一个失败的网址:
http://www.shutterstock.com/cat.mhtml?searchterm=сиськиаа
http://www.shutterstock.com/cat.mhtml?searchterm=брей
http://www.shutterstock.com/cat.mhtml?searchterm=фф
这到底是怎么回事?
我尝试了URI.create 和URLEncoder.encode 的url 编码。
使用 URLEncoder.encode 我的网址看起来像:
http://www.shutterstock.com/cat.mhtml?searchterm=%D1%8C
但我得到完全相同的异常。
【问题讨论】:
-
见RFC 3986 § 2。 URI 中不允许使用西里尔字符...
-
Брей сиськи - это правильно
-
@BoristheSpider 我写道我使用了 URLEncoder.encode 所以我尝试执行
http://www.shutterstock.com/cat.mhtml?searchterm=%D1%8C得到相同的结果 -
@KaPaHgaIII 如果你编码然后传递给构造函数,你最终会得到this problem - 即双重编码。
-
@BoristheSpider 我没有进行双重编码,我尝试了 URLEncoder.encode 或 URI.create
标签: java url encoding apache-httpclient-4.x url-encoding