我流程裡,使用的是gbk,或gb2312編碼格式,utf-8還沒試過。
1)jsp頁面:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
//1.下面這句是解決亂碼的關鍵之一,下面這句不僅影響中文,還影響布局,我之前布局時用utf-8,現在又改為gb2312,放在IE8裡布局亂掉,firefox裡正常。
<%@page contentType="text/html; charset=gb2312" %>
<%request.setCharacterEncoding("GB2312"); %>
2)伺服器端,servlet裡:
把從介面獲得的參數,轉成gb2312,因為瀏覽器預設傳參數的編碼是iso-8859-1
String searchW = req.getParameter("searchWord");
//2.下面這句是解決亂碼的關鍵之一
String searchWord = new String(searchW.getBytes("iso-8859-1"),"gb2312");
下面這兩句我做了測試,加了和沒加只要上面的步驟正確,都可以顯示中文。不過我還是加了
req.setCharacterEncoding("GB2312");
resp.setContentType("text/html;chartset=GB2312");
3)資料庫端,把資料庫編碼也設為gbk.
我今天也碰到了一個頭疼的問題:如果把chartset utf-8改為gb2312,IE8裡的網頁布局就會有點亂。firefox還是正常,如果不改為gb2312中文資料又會出現亂碼。所以頁面的編碼,在IE8裡還會影響到布局。(其他IE版本沒做測試)
<%@page contentType="text/html; charset=utf-8" %><!-- This sentence decide the css and the unreadable code-->
後來我把,所有的css檔案,都儲存為gbk的編碼格式,把css裡的中文亂碼都刪掉,在IE8中的布局才恢複正常。
附帶查看作業系統編碼的Java程式:
public classShowSystemDefaultEncoding {
public static void main(String[]args) {
String encoding =System.getProperty("file.encoding");
System.out.println(encoding);
}}