数据交互时中文乱码问题的解决方法总结

数据交互时中文乱码问题的解决方法总结

解决方法(以下解决方法适用于浏览器是utf-8编码格式,后台程序的编码格式也是utf-8格式):
   (1)、 浏览器向服务器提交数据(后台接收页面传过来的数据出现问题):
1)、如果是post请求
request.setCharacterEncoding("utf-8");
2)、如果是get请求,要针对提交过来的数据进行编码,解码
如:
String username = request.getParameter("username");
username=new String(username.getBytes("iso-8859-1"),"utf-8");
   
  (2)、服务器向浏览器响应数据(后台传过去的数据在页面显示时出现乱码)

response.setContentType(“text/html;charset=utf-8”);

下面是关于数据传递过程的分析:

(1)、程序键数据交互时,有两种方式:

方式1: 以字节为单位 比如:JDK的IO实现

直接传递字节,与编码集无关。

方式2: 以字符为单位 比如:java程序与数据库的JDBC操作。

1)、传递的是 字节+编码集

2)、到mysql,取出字节与编码集,转换成字符。

3)、再将字符转换成自身编码方式对应的字节,然后存储。

4)、查看数据库时,再将存储的字节转换成自身编码格式的字符

(2)、浏览器向服务器提交数据(后台接收页面传过来的数据出现问题):

数据交互时中文乱码问题的解决方法总结

总结:

Java程序与Tomcat浏览器之间数据交互以  字符为标准,Tomcat与浏览器之间 以字节为标准.三者编码集不一样,所以乱码了。

设置Tomcat和浏览器的编码集都是UTF-8

response.setCharacterEncoding(“UTF-8”);//知识告知Toncat

response.setHeader(“content-type”,”text/html;charset=utf-8”);//告知Tomcat与服务器。

简化:

response.setContentType(“text/html;charset=utf-8”);

(3)、服务器向浏览器响应数据(后台传过去的数据在页面显示时出现乱码)

数据交互时中文乱码问题的解决方法总结

总结:

浏览器传递字节到Tomcat,乱码 Tomcat到程序显示Tomcat的文本,但是字节变了。

解决方法:

程序的字符按照ISO-8859-1转换成字节数组

byte[] buffer=msg.getBytes(“ISO-8859-1”);

字节数组按照UTF-8转换成字符

new   String(buffer,”UTF-8”);

上述实现GET和POST通用。

简化方案:

request.setCharacterEncoding(“UTF-8”);只用于POST方式