必须使用UTF-16 Url编码才能在Java中提交搜索。我怎么能够?

时间:2011-09-06 20:00:37

标签: java url-encoding utf-16

某个网站(不受我控制)有一个内部搜索引擎,它使用看起来像something.com/search?query=%u0001%0101的GET请求,我想在我的Java代码中使用它。

根据我的理解,这是一种不常见的方式(UTF-16)来进行Url编码。我尝试将HttpURLConnection与上述类型的Url一起使用,但是这会抛出java.net.URISyntaxException Malformed escape pair at index X(X是%u0001的位置)。

我该怎么办?我对这些网址编码问题很陌生,所以任何建议都会受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

表单something.com/search?query=%u0001%0101违反了URI规范,因为为percent-encoding保留了百分比字符。根据此规则,百分比符号后面必须跟两个十六进制数字。这不是有效的UTF-16编码URI。

在这些地址上抛出错误并不奇怪。

您可能不得不打开socket并发送自己格式错误的client request

GET /search?query=%u0001%0101 HTTP/1.1
Host: something.com

答案 1 :(得分:0)