和基友一起撸Java Web,基友负责前端我负责后端。urldecoder.decode前端用jQuery与后端交互,参数和响应全部用JSON传。在传参数的时候JSON字符串肯定会被URL Encode,在后端要进行URL Decode之后才能解析。一开始用的是URLDecoder解析:
return URLDecoder.decode(str);
之后发现中文全都是乱码……很尴尬。一开始以为是浏览器发送的数据的编码和Java默认的编码不一样,于是各种转换编码,还是跪了。判断了一下编码,发现本来就是UTF-8,但打印出来还是乱码。后来把字符串按字节打印出来,发现中文部分和URL Encode之后的那部分字符串完全吻合,之前也看到有人用URL Encode然后Decode解决了中文乱码问题,才意识到是URL Decode出了问题。urldecoder.decode其实URLDecoder.decode(String) 这个方法是deprecated的,加上指定文本编码的参数,乱码问题解决:
return URLDecoder.decode(str, "UTF-8");
看来以后还是不要用deprecated方法……废弃一定是有原因的orz
顺便贴一下Java中判断字符串编码的方法:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-40103-1.html
你马云没错