【发布时间】:2011-09-07 05:03:25
【问题描述】:
某个站点(不受我控制)有一个内部搜索引擎,它使用如下所示的 GET 请求:something.com/search?query=%u0001%0101,我想在我的 Java 代码中使用它。
据我了解,这是一种不太常见的 URL 编码方式 (UTF-16)。我尝试将 HttpURLConnection 与上述类型的 Url 一起使用,但这会给我一个 java.net.URISyntaxException Malformed escape pair at index X(X 是 %u0001 的位置)。
我能做什么?我对这些 url 编码问题很陌生,所以任何建议都将受到高度赞赏。
【问题讨论】:
-
也许你必须双重编码?首先是 UTF-16,然后是 URL 编码?
-
不确定你的意思,但也许这会澄清:首先我将 unicode 字符编码为 ASCII 以匹配站点的语法(假的,例如 %$# -> %u0000%u0002%u0500),然后我从它们创建一个 URL,并尝试打开一个连接。所以我的代码是这样的: Url("something.com/search?query=%u0000%u0002%u0500").openConnection();
-
对于我的具体情况,the answer here 解决了这个问题。虽然我没有尝试过,但我的搜索得出的结论是@McDowell 有一个正确且更通用的方法。
标签: java url-encoding utf-16