javaweb 中的乱码问题

一、post 方式

首先我们看下面一段代码,在该HTML中我们指定的编码为“UTF-8”,如图所示。

在该代码中,我们将表单数据提交给ParamServlet 处理

servlet 会将接收到的数据打印到控制台

控制台会正常显示两个值

然后输入中文

提交后显示乱码

原因分析:

我们在浏览器输入汉字后,浏览器查UTF-8编码表后,将汉字转化成二进制(一个汉字在UTF-8中占三个字节)

发送给服务器处理,如果服务器没做任何控制(以tomcat为例),会默认去查ISO8859-1这个码表(一个字节代表一个字符)来解析数据

iso8859-1里没有那么多字符,有的字在iso8859-1中根本没有对应字符,就用?表示,有对应的就会显示哪些奇怪的字符,就出现了乱码喽,

所以,解决方案就出来了,我们就明确的通知我们的服务器不用ISO8859-1了,请用UTF-8

 

这回就不会乱码了()

 

另外  response 与request 相类似

代码如下:

 

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

 

 二、get方式

以上方案只适用于post方式。因为post方式提交数据,数据在实体内容当中,而get方式提交,数据在url之中

对于get提交只能手动进行乱码解决

 由于乱码的底层编码没有改变,所以我们将乱码按照ISO8859-1编码回原来的二进制,得到相应字节数组,我们再去查UTF-8码表,将二进制转换成相应字符

代码如下图:

 

注:以上划线代码对于post 和get方式乱码均有效。

 

posted @ 2016-03-25 20:24  破玉  阅读(323)  评论(0编辑  收藏  举报