[转帖]JSP中文及传中文参数乱码解决方法小结_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3827 | 回复: 0   主题: [转帖]JSP中文及传中文参数乱码解决方法小结        下一篇 
zhou
注册用户
等级:中校
经验:2210
发帖:125
精华:6
注册:2012-11-19
状态:离线
发送短消息息给zhou 加好友    发送短消息息给zhou 发消息
发表于: IP:您无权察看 2012-11-21 16:52:59 | [全部帖] [楼主帖] 楼主

JSP中文及传中文参数乱码解决方法小结


在使用JSP的过程中,最使人头疼的一个问题就是中文乱码问题,以下是我在软件开发中遇到的乱码问题以及解决方法。

    1、JSP页面乱码

    这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可,

    2、数据库乱码

    这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下:
在数据库连接字符串中加入编码字符集

String Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";


并在页面中使用如下代码:

response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");


  3、中文作为参数传递乱码

    当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下:
在参数传递时对参数编码,比如

RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)


然后在接收参数页面使用如下语句接收

keywords=new String(request.getParameter("keywords").getBytes("8859_1"));


  4、JSP页面乱码加这句?

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %>


       5、在form中用get方法传参乱码解决方法

     如:

1、 login.jsp

<%@ page language="java" contentType="text/html;charset=GBK"%>
<html>
<head>
<title>get传参乱码问题</title>
</head>
<body>
<form name="form1" action="login_do.jsp" method="GET">
<input type="text" name="username"/><br>


     <input type="password" name="password"/><input type="submit" value="提交"/>

 </form>
</body>
</html>
============
2、login_do.jsp
<%@ page language="java" contentType="text/html;charset=GBK"%>
<%
String temp=request.getParameter("username");
if(temp!=null){
      temp=new String(temp.getBytes("8859_1"),"GBK");
}
out.println(temp);
%>


6、在ajax中url传中文参数时乱码要注意的地方:

例如下面这个方法:

//增加类别函数
function addSort(){
      var name = document.getElementById("name").value; //取得id为name的文本框的值(中文的)
      if(name==""){
            alert("类别名称不能为空!");
            document.getElementById("name").focus();
            return false;
      }
      var url = "action=add&name="+name; //这个name是中文参数
      createXMLHttpRequest();
      XMLHttpReq.onreadystatechange = AddStateChange;
      XMLHttpReq.open("POST","adminSort",true); //通过post方式传送
      XMLHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      XMLHttpReq.send(url);
}
============


在servlet中获取参数的时候:

//解决url中文参数乱码的关键是这里,因为post方法提交数据默认的字符编码是utf-8,
//如果后台是gb2312或其他编码数据就会产生乱码,所以这里也要将请求参数设为utf-8
//尽管你的jsp页面是contentType="text/html;charset=GBK"
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");


当输出返回信息时:

response.setContentType("text/xml;charset=UTF-8");
//这里有点怪,当设为GBK时,ie显示不正常,firefox则正常,设为utf-8时,两者都显示正常




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论