我正在使用以下代码:
searchKey = URLEncoder.encode(searchKey,"UTF-8");
builder.queryParam("searchKey", searchKey.trim());
现在,我已经尝试过:
String s = "hello%20world%20%26%20you%20%20%20%20%20%20";
s.trim();
System.out.println(s);
输出:
hello%20world%20%26%20you%20%20%20%20%20%20
可能有什么解决方法?
注:我还考虑过在编码之前修整我的searchKey,但是它已经被编码为使用其他编码的其他restcall收到的。
String类的trim()方法是否适用于编码字符串?
不,出于简单的原因,Java无法将编码字符串与恰好包含编码字符序列的字符串区分开。 URL编码只是众多编码中的一种,如果字符串是用任何特定编码的值,尝试计算是不可行的。
如果要修剪编码的字符串,则必须先对其进行解码,然后对其进行修剪,然后对其进行重新编码。
但是请注意,s.trim();
不会更新s
。字符串是不可变的。您需要分配s = s.trim();
或类似名称。
使用s.trim();
并将其存储在新变量中,然后使用该新变量。它应该可以工作。