java web中文_Java Web的中文问题

摘自王俊标编著的《精通Java Web开发-基于Struts EJB Hibernate JBuilder》一书:

1、页面请求

采用Filter过滤器方式:

web.xml片段

1

9723ec7779ef47d51f1f48b9337ffca0.gif

……

2

9723ec7779ef47d51f1f48b9337ffca0.gif

3

9723ec7779ef47d51f1f48b9337ffca0.gif

<

filter

>

4

9723ec7779ef47d51f1f48b9337ffca0.gif

5

9723ec7779ef47d51f1f48b9337ffca0.gif

<

filter-name

>

encodingfilter

filter-name

>

6

9723ec7779ef47d51f1f48b9337ffca0.gif

7

9723ec7779ef47d51f1f48b9337ffca0.gif

<

filter-class

>

login3.EncodingFilter

filter-class

>

8

9723ec7779ef47d51f1f48b9337ffca0.gif

9

9723ec7779ef47d51f1f48b9337ffca0.gif

10

9723ec7779ef47d51f1f48b9337ffca0.gif

<

init-param

>

11

9723ec7779ef47d51f1f48b9337ffca0.gif

<

desription

>

encode to gb2312

desription

>

12

9723ec7779ef47d51f1f48b9337ffca0.gif

<

param-name

>

encoding

param-name

>

13

9723ec7779ef47d51f1f48b9337ffca0.gif

<

param-value

>

gb2312

param-value

>

14

9723ec7779ef47d51f1f48b9337ffca0.gif

init-param

>

15

9723ec7779ef47d51f1f48b9337ffca0.gif

filter

>

16

9723ec7779ef47d51f1f48b9337ffca0.gif

17

9723ec7779ef47d51f1f48b9337ffca0.gif

18

9723ec7779ef47d51f1f48b9337ffca0.gif

<

filter-mapping

>

19

9723ec7779ef47d51f1f48b9337ffca0.gif

20

9723ec7779ef47d51f1f48b9337ffca0.gif

<

filter-name

>

encodingfilter

filter-name

>

21

9723ec7779ef47d51f1f48b9337ffca0.gif

<

url-pattern

>

/*

url-pattern

>

22

9723ec7779ef47d51f1f48b9337ffca0.gif

filter-mapping

>

23

9723ec7779ef47d51f1f48b9337ffca0.gif……

EncodingFilter.java

1

9723ec7779ef47d51f1f48b9337ffca0.gif

import

java.io.IOException;

2

9723ec7779ef47d51f1f48b9337ffca0.gif

3

9723ec7779ef47d51f1f48b9337ffca0.gif

import

javax.servlet.

*

;

4

9723ec7779ef47d51f1f48b9337ffca0.gif

import

javax.servlet.http.HttpServlet;

5

9723ec7779ef47d51f1f48b9337ffca0.gif

6

9723ec7779ef47d51f1f48b9337ffca0.gif

public

class

EncodingFilter

extends

HttpServlet

7

04e85f05536ccd79982bbca17251f63e.gif

944d071149be1c8c4402f26bdcd107b0.gif

implements

Filter

16a9fb34be116f8614241ccc553f3555.gif

{

8

7a3782e39bce8b40e9b05a5e4fd452d8.gif

9

7a3782e39bce8b40e9b05a5e4fd452d8.gif

private

FilterConfig filterConfig;

10

7a3782e39bce8b40e9b05a5e4fd452d8.gif

11

7a3782e39bce8b40e9b05a5e4fd452d8.gif

private

String targetEncoding

=

null

;

12

7a3782e39bce8b40e9b05a5e4fd452d8.gif

13

a5ca97a1042a494993b61012f0c7f4e7.gif

e1ed2ced3b3e975bd246687204c32ce4.gif

public

void

init(FilterConfig filterConfig)

throws

ServletException

16a9fb34be116f8614241ccc553f3555.gif

{

14

7a3782e39bce8b40e9b05a5e4fd452d8.gif

this

.filterConfig

=

filterConfig;

15

7a3782e39bce8b40e9b05a5e4fd452d8.gif

this

.targetEncoding

=

this

.filterConfig.getInitParameter(

"

encoding

"

);

16

84b88d7ce3b476e13678154aa69b5b89.gif    }

17

7a3782e39bce8b40e9b05a5e4fd452d8.gif

18

7a3782e39bce8b40e9b05a5e4fd452d8.gif

public

void

doFilter(ServletRequest request, ServletResponse response,

19

a5ca97a1042a494993b61012f0c7f4e7.gif

e1ed2ced3b3e975bd246687204c32ce4.gif            FilterChain chain)

throws

IOException, ServletException

16a9fb34be116f8614241ccc553f3555.gif

{

20

a5ca97a1042a494993b61012f0c7f4e7.gif

e1ed2ced3b3e975bd246687204c32ce4.gif

try

16a9fb34be116f8614241ccc553f3555.gif

{

21

7a3782e39bce8b40e9b05a5e4fd452d8.gif            System.out.println(

"

targetEncoding :

"

+

targetEncoding

+

"

\n

"

);

22

7a3782e39bce8b40e9b05a5e4fd452d8.gif            request.setCharacterEncoding(targetEncoding);

23

7a3782e39bce8b40e9b05a5e4fd452d8.gif            chain.doFilter(request, response);

24

a5ca97a1042a494993b61012f0c7f4e7.gif

e1ed2ced3b3e975bd246687204c32ce4.gif        }

catch

(ServletException sx)

16a9fb34be116f8614241ccc553f3555.gif

{

25

7a3782e39bce8b40e9b05a5e4fd452d8.gif            filterConfig.getServletContext().log(sx.getMessage());

26

a5ca97a1042a494993b61012f0c7f4e7.gif

e1ed2ced3b3e975bd246687204c32ce4.gif        }

catch

(IOException iox)

16a9fb34be116f8614241ccc553f3555.gif

{

27

7a3782e39bce8b40e9b05a5e4fd452d8.gif            filterConfig.getServletContext().log(iox.getMessage());

28

84b88d7ce3b476e13678154aa69b5b89.gif        }

29

84b88d7ce3b476e13678154aa69b5b89.gif    }

30

7a3782e39bce8b40e9b05a5e4fd452d8.gif

31

a5ca97a1042a494993b61012f0c7f4e7.gif

e1ed2ced3b3e975bd246687204c32ce4.gif

public

void

destroy()

16a9fb34be116f8614241ccc553f3555.gif

{

32

7a3782e39bce8b40e9b05a5e4fd452d8.gif

this

.filterConfig

=

null

;

33

7a3782e39bce8b40e9b05a5e4fd452d8.gif

this

.targetEncoding

=

null

;

34

84b88d7ce3b476e13678154aa69b5b89.gif    }

35

da43bcbc871cd4f18defa9179da7af64.gif}

36

9723ec7779ef47d51f1f48b9337ffca0.gif

2、Web容器编码

在Tomcat的的源代码中的getParameter()方法,用户调用request.getParameter()方法时,首先调用parsetParameters()方法,在这里面将编码进行转换。如:

String s_target = new String (s_source.getBytes("iso-8859-1"), "gb2312);

3、数据库

MySQL中文问题的主要原因是:它对数据进行编码时,采用了和底层的操作系统所不同的编码。通常MySQL在中文Windows平台上正确的编码方式是GBK。因此只要将MySQL安装目录下的my.ini文件中的default-character-set选项设为GBK即可。

4、响应结果

对于Servlet的代码处理,可以使用:

……

respsonse.setContentType("text/html;charset=GB2312");

……

对于JSP文件,可以在开头部分添加如下声明:

……

……

对于HTML页面文件,则在开头部分添加声明如下:

……

……

5、XML文件

在采用"UTF-8"方式编码的情况下,使用XML文件存储中文数据常常会出现乱码的问题,建议使用"GB2312":

ce558abcf02afb3e5471a2295322e192.png

tanzek 2008-03-20 09:43 发表评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值