1.servlet跳轉到jsp頁面
在JSP中涉及到使用Servlet進行一些邏輯處理 處理完後進行頁面跳轉 如在Servlet中進行的request.getRequestDispatcher("index.jsp").forward(request, response); 這樣的跳轉 可是有時候我們在跳轉的時候 會遇到中文亂碼的問題 就算是同一個頁面 你進行過一些處理後調回本頁面 也可能遇到這樣的情況 也許你會說你沒有啊 因爲出現這種情況是你的Servlet中存在這樣的語句:PrintWriter out = response.getWriter(); 也許你也有設置他的字符集 可是正確的解決方法是:
在PrintWriter out = response.getWriter();之前設置他的字符集,如:response.setCharacterEncoding("GBK");這樣跳轉的頁面也就不會出現中文亂碼了
2.servlet傳到數據庫產生的亂碼問題
(1)建立一個字符串轉換類,如下所示
import java.io.UnsupportedEncodingException;
public class StringTo {
public static String ConvertoCN(String str)
{
byte[] bs;
String str1 = null ;
try {
bs = str.getBytes("ISO-8859-1");
str1 = new String(bs,"utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str1;
}
}
然後把request.getParameter("name")等類似的改爲
StringTo.ConvertoCN(request.getParameter("name"));問題解決
3.jsp中的亂碼問題(分三步)
(1)統一格式,我選的是UTF-8
(2)選擇window->prerences->general->workspace->other改爲UTF-8
(3)另外jsp中也要統一格式,因爲我選的是UTF-8
代碼如下所示
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
對於jsp中已造成亂碼的問題自己手動改正
(4)自己寫一個filter過濾器
(5)
數據庫亂碼(mysql)
統一數據庫和工程編碼格式
conn=DriverManager.getConnection("jdbc:MySQL://localhost:3306/test?useUnicode=true&&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull","root","123");
(6)
ajax傳漢字或者a標籤傳值
這樣傳值
"url?name="+encodeURI(encodeURI("中國"));
Servlet端
java.net.URLDecoder urlDecoder = new java.net.URLDecoder();
String s = urlDecoder.decode(userName,"UTF-8");