第1个回答 2021-06-28
自己整理的:
乱码的根本问题是--编码和解码不一致导致的
那么我们只需要让编码和解码一致就可以了,比如我们设置全程的编码方式为UTF-8。
数据发送阶段。
浏览器发送给服务器默认的编码方式是ISO-8859-1,如果有中文传递。我给出了三种解决办法
第一种:万能解决法(post和get都适用)
首先服务器按照ISO-8859-4-1方式解码(以表单提交数据为例,name='usernmae')
byte[] bytes = request.getParameter("username","ISO-8859-1");
拿到原始的二进制编码方式后再按照utf-8重新编码
String username = new String(bytes,"UTF-8");//这里编辑器、服务器也要UTF-8
这样就可以解决传送过程的乱码
第二种:post请求解决办法(修改请求体的编码方式)
request.setCharacterEncoding("UTF-8");//大概就是告诉浏览器这么发送数据
第三种:get请求解决办法(修改请求行的编码方式)
通过修改Tomcat的配置文件servlet.xml中的<Connextor URIEncoding = "UTF-8"></Connector>
这样就可以保证在传送数据不乱码
数据保存阶段乱码
如果在保存中出现乱码可以在mysql数据库建表语句后面加上charset= 'utf-8'来告诉数据库保存数据的编码。本回答被网友采纳