struts中文处理

一、编码介绍和选择原则   为使struts应用顺利处理中文字符,防止乱码,一般的原则是尽可能在所有的地方使用同一种编码

   strtus和MySQL数据库等一般默认的编码为 ISO8859-1 ,适用于拉丁字符;

   适用于简体中文的常用编码有: UTF-8(ISO10646标准),GB2312(中文字较少),GBK(微软的扩充编码,非标),GB18030(新国标)。
  
   如果程序只针对中文用户,不考虑拉丁文(如英语)之外的国际化,我们可以选择上述任何一种字符;如果需要国际化,应选择UTF-8,以获得最大限度的适应 性。

   下面的介绍以 UTF-8 编码为例。

二、数据库字符集选择

新建数据库时,选择 UTF-8 编码。

也可以配置 MySQL 使用 UTF-8 为默认字符编码。
     开始菜单 -> MySQL -> MySQL Server -> MySQL Server Instance Config Wizard :

也可以选择第三个选择,在列表中选择"utf8"。

三、jsp 文件

在头部使用 <%@ page language="java" pageEncoding=" UTF-8 "%>

<html>的<head>部分使用:<META http-equiv=Content-Type content="text/html; charset= UTF-8 "> ,该行代码仅当有的时候才 需要更改。

如果需要修改 eclipse 默认的 jsp 编码,如下操作:
eclipse -> window -> preferances 打开首选项窗口:


四、编码转换

可以使用以下三个方法之一,把表单提交的数据转换为中文:

1、ActionForm 的 validate()方法中,通过代码手工转换每个String。

例如要转换 name 属性:
try {
   this.
name = new String(this.name .getBytes("ISO8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
}

该方法的缺点是: 1) 必须配置使用此 ActionForm 的 Action 要求验证;2) 每个属性都要手工编码转换,比较烦琐。

2、使用过滤器进行编码转换: (适用于所有java web应用)

在过滤器的 doFilter() 方法中加入:request.setCharacterEncoding("UTF-8"); 并 配置此过滤器过滤所有的路径/*

3、扩展ActionServlet: (适用于struts应用)

重写process()方法,在调用super.process()之前,加入: request.setCharacterEncoding("UTF-8"); 并配置此 ActionServlet 替代原 struts 的标准 ActionServlet。

注:方法1,2,3任选其一。

五、资源文件:

为便于在资源文件中输入中文,可以下载 JInto 插件(适用于eclipse)。
如果struts应用考虑国际化,可以在默认资源中输入英文,增加中文资源,输入对应的中文字;
如果只针对简体中文,可以直接使用默认资源,在里面输入中文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值