您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 鹤岗分类信息网,免费分类信息发布

jsp如何处理中文乱码

2024/2/17 21:51:28发布20次查看
绝大多数的开发平台包括java,c语言,python(甚至更多)在进行代码开发的过程中,几乎都要用到中文。而计算机在处理这些东西的时候,它并不能识别出你写的东西是什么,他会将这些数据进行编码处理,转换成计算机能进行识别并执行的语言。编译过后的代码如果没有进行反编译的话,给我们看到的就是一堆让人看不懂的乱码。
 首先,我们需要搞清楚为什么会出乱码? 
服务器是在接收和发送数据时,是如何对数据进行编码的?
1.服务器发送数据
     对于发送数据,服务器按照response.setcharacterencoding—contenttype—pageencoding的优先顺序,对要发送的数据进行编码。   
2.服务器接收数据
     对于接收数据,要分三种情况。一种是浏览器直接用url提交的数据,另外两种是用表单的get和post方式提交的数据。     
     因为各种web服务器对这三种方式的处理也不相同,所以我们以tomcat5.0为例。   
     ①对于表单中post方式提交的数据
     只要在jsp页面上设置了response.setcharacterencoding或contenttype或pageencoding为utf-8,在接受数据的jsp/servlet中都不会出现中文乱码问题。
     ②对于url提交的数据和表单中get方式提交的数据
     在接收数据的jsp/servlet中仅仅设置request.setcharacterencoding参数是不行的
     因为在tomcat5.0中,默认情况下使用iso-8859-1对url提交的数据和表单中get方式提交的数据进行重新编码(解码),要解决该问题:     
     应该在tomcat的配置文件server.xml的connector标签中设置usebodyencodingforuri或者 uriencoding属性,其中uriencoding参数指定对所有get方式请求(包括url提交的数据和表单中get方式提交的数据)进行统一的重新编码(解码)的编码。
     其中usebodyencodingforuri参数表示是否用request.setcharacterencoding 参数对url提交的数据和表单中get方式提交的数据进行重新编码,在默认情况下,该参数为false;
     uriencoding和usebodyencodingforuri区别是,uriencoding是对所有get方式的请求的数据进行统一的重新编码(解码),而usebodyencodingforuri则是根据响应该请求的页面的request.setcharacterencoding参数对数据进行的重新编码(解码),不同的页面可以有不同的重新编码(解码)的编码。所以对于url提交的数据和表单中get方式提交的数据,可以修改 uriencoding参数为浏览器编码或者修改usebodyencodingforuri为true,并且在获得数据的jsp页面中 request.setcharacterencoding参数设置成浏览器编码。
在提交jsp时对于乱码问题,首先我们要搞清楚为什么会出现乱码?
看jsp的头文件:<%@ page contenttype="text/html;charset=utf-8" language="java"%>
在这个头文件中,还有一个与编码的相关的属性:pageencoding
首先,说说jsp/servlet中的几个编码的作用。     
在jsp/servlet中主要有以下几个地方可以设置编码,pageencoding=utf-8、contenttype=text/html;charset=utf-8、request.setcharacterencoding(utf-8)和 response.setcharacterencoding(utf-8),其中前两个只能用于jsp中,而后两个可以用于jsp和servlet 中。
request.setcharacterencoding(utf-8)的作用是在服务器端设置客户端请求进行重新编码的编码。    
      该方法用来指定对浏览器发送来的数据进行重新编码(或者称为解码)时,使用的编码。     
response.setcharacterencoding(utf-8)的作用是指定在客户端对服务器响应进行重新编码的编码。     
      服务器在将数据发送到浏览器前,对数据进行重新编码时,使用的就是该编码。
下面总结下,以tomcat7.0为web服务器时,如何防止中文乱码。     
1、对于同一个应用,最好统一编码,推荐为utf-8,当然gbk也可以。     
2、正确设置jsp的pageencoding=utf-8 
3、在所有的jsp/servlet中设置contenttype=text/html;charset=utf-8或response.setcharacterencoding(utf-8),从而间接实现对浏览器编码的设置。     
4、对于非表单提交的get或url请求,可以修改tomcat的默认配置,推荐将usebodyencodingforuri参数设置为true,也可以将uriencoding参数设置为 utf-8(有可能影响其他应用,所以不推荐)。或者用下面的方法,在接收数据时处理:
  request.getparameter(userid),得到userid的值   
  request.getparameter(userid).trim()将这个值去掉两边的空格   
  request.getparameter(userid).trim().getbytes(iso-8859-1))将这个string用iso-8859-1编码成一个字节数祖   
  new   string(request.getparameter(userid).trim().getbytes(iso-8859-1),utf-8)将刚才的字节数祖传进string的构造函数按照utf-8编码创建一个string对象。 
5.使用urlencoder的方法
传参前用: 
//使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式
string username_encoder = urlencoder.encode(username,utf-8);
接参数后显示用:
//使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码
string username_decoder = urldecoder.decode(request.getparameter(username),utf-8);
以上就是jsp如何处理中文乱码的详细内容。
鹤岗分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录