Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java URLDecoder.decode未按预期工作_Java_Javascript_Maven_Spring Mvc_Encoding - Fatal编程技术网

Java URLDecoder.decode未按预期工作

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”

我试图将一个搜索字符串从javascript前端传递给访问另一个api的java控制器

除了带有特殊字符(例如“test+123”)的字符串外,所有内容都在运行

我用编码/解码来解决这个错误。我使用的是JavaScript encodeURIComponent()和Java URLDecoder()的组合

此外,我还研究了以下内容:

他们使用“utf8”(URLDecover.decode(字符串,“utf8”);)

我只使用javascript编码进行测试,它将我的字符串“test+123”转换成一系列正确的结果

我的记录器声明正在搜索正确的搜索字符串

Ex“测试+123”: 不编码javascript->测试123

使用javascript编码->“测试+123”

使用Java解码->无结果

我的Javascript代码如下所示:

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(字符串)来消除该变量:(不幸的是,这似乎不是问题。