javascript
JSP中文及传中文参数乱码解决方法小结
在使用JSP的過程中,最使人頭疼的一個問題就是中文亂碼問題,以下是我在軟件開發(fā)中遇到的亂碼問題以及解決方法。
1、JSP頁面亂碼
這種亂碼的原因是應(yīng)為沒有在頁面里指定使用的字符集編碼,解決方法:只要在頁面開始地方用下面代碼指定字符集編碼即可,
2、數(shù)據(jù)庫亂碼
這種亂碼會使你插入數(shù)據(jù)庫的中文變成亂碼,或者讀出顯示時也是亂碼,解決方法如下:
在數(shù)據(jù)庫連接字符串中加入編碼字符集
String Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
并在頁面中使用如下代碼:
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
3、中文作為參數(shù)傳遞亂碼
當(dāng)我們把一段中文字符作為參數(shù)傳遞個另一頁面時,也會出現(xiàn)亂碼情況,解決方法如下:
在參數(shù)傳遞時對參數(shù)編碼,比如
RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)
然后在接收參數(shù)頁面使用如下語句接收
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傳中文參數(shù)時亂碼要注意的地方:
例如下面這個方法:
//增加類別函數(shù)
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是中文參數(shù)
createXMLHttpRequest();
XMLHttpReq.onreadystatechange = AddStateChange;
XMLHttpReq.open("POST","adminSort",true);?????????//通過post方式傳送
XMLHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XMLHttpReq.send(url);
}
============
在servlet中獲取參數(shù)的時候:
//解決url中文參數(shù)亂碼的關(guān)鍵是這里,因?yàn)閜ost方法提交數(shù)據(jù)默認(rèn)的字符編碼是utf-8,
//如果后臺是gb2312或其他編碼數(shù)據(jù)就會產(chǎn)生亂碼,所以這里也要將請求參數(shù)設(shè)為utf-8
//盡管你的jsp頁面是contentType="text/html;charset=GBK"
request.setCharacterEncoding("UTF-8");??
String name = request.getParameter("name");
當(dāng)輸出返回信息時:
response.setContentType("text/xml;charset=UTF-8");
//這里有點(diǎn)怪,當(dāng)設(shè)為GBK時,ie顯示不正常,firefox則正常,設(shè)為utf-8時,兩者都顯示正常
轉(zhuǎn)載于:https://www.cnblogs.com/hqr9313/archive/2012/09/19/2693459.html
總結(jié)
以上是生活随笔為你收集整理的JSP中文及传中文参数乱码解决方法小结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发现一个非常好用的扒站工具IDM
- 下一篇: 供应商寄售库存管理_【论文解读】物流联合