摘自王俊標編著的《精通Java Web開發(fā)-基于Struts EJB Hibernate JBuilder》一書:
1、頁面請求
???采用Filter過濾器方式:
??????????????????web.xml片段

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

?????????EncodingFilter.java

?2

?3

?4

?5

?6

?7



?8

?9

10

11

12

13



14

15

16

17

18

19



20



21

22

23

24



25

26



27

28

29

30

31



32

33

34

35

36

2、Web容器編碼
??????在Tomcat的的源代碼中的getParameter()方法,用戶調(diào)用request.getParameter()方法時,首先調(diào)用parsetParameters()方法,在這里面將編碼進行轉(zhuǎn)換。如:
??????String s_target = new String (s_source.getBytes("iso-8859-1"), "gb2312);
3、數(shù)據(jù)庫
??????MySQL中文問題的主要原因是:它對數(shù)據(jù)進行編碼時,采用了和底層的操作系統(tǒng)所不同的編碼。通常MySQL在中文Windows平臺上正確的編碼方式是GBK。因此只要將MySQL安裝目錄下的my.ini文件中的default-character-set選項設(shè)為GBK即可。
4、響應結(jié)果
??????對于Servlet的代碼處理,可以使用:
?????????……
?????????respsonse.setContentType("text/html;charset=GB2312");
?????????……
??????對于JSP文件,可以在開頭部分添加如下聲明:
?????????……
?????????<%@ page contentType="text/html;charset=GB2312" %>
?????????……
??????對于HTML頁面文件,則在開頭部分添加聲明如下:
?????????……
?????????<head>
????????????<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=GB2312">
?????????</head>
?????????……
5、XML文件
??????在采用"UTF-8"方式編碼的情況下,使用XML文件存儲中文數(shù)據(jù)常常會出現(xiàn)亂碼的問題,建議使用"GB2312":
??????<?xml version='1.0' encoding="GB2312"