Java URLDecoder.decode未按预期工作
我试图将一个搜索字符串从javascript前端传递给访问另一个api的java控制器 除了带有特殊字符(例如“test+123”)的字符串外,所有内容都在运行 我用编码/解码来解决这个错误。我使用的是JavaScript encodeURIComponent()和Java URLDecoder()的组合 此外,我还研究了以下内容: 他们使用“utf8”(URLDecover.decode(字符串,“utf8”);) 我只使用javascript编码进行测试,它将我的字符串“test+123”转换成一系列正确的结果 我的记录器声明正在搜索正确的搜索字符串 Ex“测试+123”: 不编码javascript->测试123 使用javascript编码->“测试+123” 使用Java解码->无结果 我的Javascript代码如下所示:Java URLDecoder.decode未按预期工作,java,javascript,maven,spring-mvc,encoding,Java,Javascript,Maven,Spring Mvc,Encoding,我试图将一个搜索字符串从javascript前端传递给访问另一个api的java控制器 除了带有特殊字符(例如“test+123”)的字符串外,所有内容都在运行 我用编码/解码来解决这个错误。我使用的是JavaScript encodeURIComponent()和Java URLDecoder()的组合 此外,我还研究了以下内容: 他们使用“utf8”(URLDecover.decode(字符串,“utf8”);) 我只使用javascript编码进行测试,它将我的字符串“test+123”
var encodedString=encodeURIComponent($("#search-input").val());
我的Java代码如下所示:
String result = URLDecoder.decode(encodedSearchString,"utf8");
我检查了调试器,我的记录器是正确的,encodedSearchString没有编码
发生什么事了
我没有写过任何其他与编码或解码相关的代码,我看不到代码中的其他地方会发生这种情况。如果有必要的话,我正在使用spring mvc、maven和intellj 可能语法必须是UTF-8而不是utf8 字符串结果=urldecker.decode(encodedSearchString,“UTF-8”) 解决方案: 这并没有返回正确结果的有趣原因是技术堆栈本身 SpringMVC包含自己的解码器,该解码器自动打开(必须手动关闭),请参阅 从上面的链接引用 从Spring 2.5开始,urlDecode默认为true。如果您希望比较编码路径,请将此标志设置为false。但是,HttpServletRequest始终以解码形式公开Servlet路径。请注意,与编码路径相比,Servlet路径将不匹配
本质上,在它的下面有一些东西是看不见的编码。因此,不需要解码消息字符串 我尝试使用utf,并使用弃用的.decode(字符串)来消除该变量:(不幸的是,这似乎不是问题。