我有一个奇怪的问题,也许有人有洞察力。我使用以下代码将查询字符串编码为 Android 上的 URL:
request = REQUEST_BASE + "?action=loadauthor&author=" + URLEncoder.encode(author, "UTF-8");
然后我在字符串中添加一些其他参数并创建一个如下所示的 URI:
uri = new URI(request);
在某个时刻,我提取查询字符串来生成校验和:
uri.getRawQuery().getBytes();
然后我发送它:
HttpGet get = new HttpGet(uri);
然后在 Appengine 服务器上检索字符串并尝试匹配校验和:
String query = req.getQueryString();
通常,这可以正常工作。但是,在前往服务器的途中似乎有一些字符未编码。例如,
action=loadauthor&author=Charles+Alexander+%28Ohiyesa%29+Eastman×tamp=1343261225838&user=1479845600
在服务器日志(和 GAE 应用程序)中显示为:
action=loadauthor&author=Charles+Alexander+(Ohiyesa)+Eastman×tamp=1343261226837&user=1479845600
这只发生在少数字符(如括号)上。其他字符始终保持编码。有没有人想过我可能做错了什么?任何反馈表示赞赏。