今天碰到一个前台MooTools框架Ajax向后台转值,后台接受是乱码的问题。
试关前台用encodeURI(参数)的方式对参数进行URL编码,
后台用java.net.URLDecoder.decode(参数, "UTF-8")进行解码,
然而得到的值一直都是乱码,后来改用其它方法,用javascript函数或后能用java进行转码都未解决,
最后在网上看到一段话:
分析:当调用request.getParameter()函数时,会自动进行一次URI的解码过程,
调用时内置的解码过程会导致乱码出现。而URI编码两次后,
request.getParameter()函数得到的是原信息URI编码一次的内容。
再用可控的解码函数java.net.URLDecoder.decode()就可解出原始的正确的信息。
以上分析纯属个人看法,不知是否正确。
试着将前台参数用encodeURI(encodeURI(参数))转换了两次,问题得以解决。
不知上面的分析是否正确,但问题确实解决,纳闷!
但还是记录下来求证。