request中文乱码问题

request中文乱码问题

我在前台传中文到servlet,方法是post,服务器是idea中集成的插件Tomcat7.0。
request获取时,设置编码格式为utf-8,打印结果乱码

img


设置为gbk,能正常显示

img

但是各个文件设置的都是utf-8,请问这是怎么回事?

tomcat8以前默认字符集ISO-8859-1

String userName = request.getParameter("username");
System.out.println("解决乱码前"+userName );
//先对乱码数据进行解码,转为字节数组
byte[] bytes = userName .getBytes(StandardCharsets.ISO_8859_1);
//字节数组解码
userName = new String(bytes, StandardCharsets.UTF_8);
//此方法针对 POST 请求有效
request.setCharacterEncoding("UTF-8");

可参考 https://zhuanlan.zhihu.com/p/351406847 来更改控制台编码

1.更改IDEA控制台编码
2.更改Tomcat配置文件编码
3.java代码中设置请求和响应的文件编码

加一个启动参数试一下吧!
加入VM启动参数的方法请参阅下面(如果Tomcat中加启动参数,只需-DFileencoding即可)
http://www.java265.com/JavaJingYan/202210/16649667724570.html
试一下吧,有疑问,再沟通!

可能是前端页面的问题,参考
https://blog.csdn.net/dyw_666666/article/details/82902408

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^