jsp中文亂碼處理問題

其實,java系統內部會把全部的字符串統一使用UTF-8編碼,而在內部轉化之前會使用操作系統默認的編碼,其中包括輸入和輸出。要想不亂碼,只需要 “統一java系統的輸入、輸出以及操作系統的字符集”,這也是處理java系統漢字的一個原則。原因是由於java的跨平臺特性,字符集必須由具體的操 作系統給出。

由此可以得到一個最簡單的解決jsp亂碼的辦法,其中主要需要把握三個環節:


1、開發和編譯代碼時就指定一個字符集,比如ISO-8859-1(西方的系統多數使用這個)


2、確定操作系統的字符集跟1統一,比如也用ISO-8859-1,這樣的OS有很多,linux就是啦


3、如果開發jsp,每個頁面都明確指定字符集:
<%@ page contentType="text/html;charSet=ISO8859-1" %>

這樣就達到了前面的目標,統一了三者的字符編碼。



這樣的系統雖然很好,沒有亂碼問題,但是顯然是以破壞跨平臺特性爲代價換取來的。想要根本解決問題,看來只有將java系統統一爲UTF-8編碼,這需要找到所有的出入口。

具體需要注意以下幾個環節:


1、開發和編譯時候指定字符集爲UTF-8


2、用過濾器將所有請求轉爲UTF-8字符集編碼

如果是用一個servlet控制分配的就在servlet的filter中寫
request.setCharacterEncoding("UTF-8")
如果是用jsp頁面,就在頭部定義
<%@ page contentType="text/html;charSet=UTF-8" %>


3、在所有的輸出上包括數據庫連接上都指定使用字符集UTF-8



另外:如果你在做二次開放,就需要重新編譯包,指定使用UTF-8編碼

附:在編譯時指定字符集的語法是javac -encoding <encoding> <sourcefile>

說明:這裏很多觀點是引用他人的,但是我自己使用過,是絕對有效的解決辦法。

發佈了31 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章