您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > JSP >

关于JSP乱码问题(页面传值产生的乱码)

来源:未知 责任编辑:责任编辑 发表时间:2013-12-18 11:35 点击:

在JSP的输入框中写入中文,传给后台的时候,常常会出现乱码问题:

 

今天看了韩顺平老师的视频,对乱码问题有了初步的认识,又经过自己的实践,把总结写出来。

 

 

产生乱码的原因:java在网络上进行传输的时候,用的是iso-8859-1的编码形式进行传输。所以,在编码和解码(得到传递值)的时候,要对应起来。。

 

解决方法主要有三个:

 

1.重新转码new String(u.getBytes("iso-8859-1"),"gb2312");

2.使用过滤器来解决[不稳定]

3.通过配置server.xml文件[不太稳定]

 

例 :

 

String userName = requset.getParameter("userName");

userName = new String(userName.getBytes("iso-8859-1"),"gb2312");

 

但每次都这样转,还是太麻烦了,因此可以写一个工具类,提供这个将乱码转成gb2312.

public class Tools{

//提供一个方法,将乱码转化成gb2312

public static String getNewString(String input){

String result = "";

try{

result = new String(input.getBytes("iso-8859-1"),"gb2312");

}catch(Exception e){

e.printStackTrace();

}

return result;

}

 

 

在用的时候,

String userName = request.getParameter("userName");

userName = Tools.getNewString(u);

 

注:在用这种方法时,后面的不一定就是gb2312,可以是gbk,utf-8.具体是哪一种,要取决于向该控制器传值的页面是哪个编码。

 

比如我的login.jsp中,是<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>,因此,我就得用

 

id = new String(id.getBytes("iso-8859-1"),"utf-8");了。。。不能犯照抄的错误呀。

 

第三种方法:韩老师只是说了这种方法可以解决,它自己试验时没能通过,我试验也没能通过。可能和tomcat的版本有关系 。

 

在tomcat的配置文件server.xml中,

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

加一个属性  URIEncoding="GBK"

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • JSP与Servlet
    • 自己动手写MiniBBS系列(基本篇)之用户登录
    • JSP取当前日期
    • JDBC 入门(一)
    • 打开一个jsp页面默认查询所有数据,调用action
    • 使用JSP标签库验证用户的输入(2)完
    • 自定义JSP标签(tag)浅议
    • WIN98/2000下的jsp服务器
    • JSP内建对象(二)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1