Hi, 如果有任何想法与我沟通, 请用: lifr_nj 在 msn.com

解决web application的本地化问题

上一篇 / 下一篇  2007-06-02 09:26:38 / 个人分类:java

一个java web application,开始只是支持英文,后来需要提供中文支持。前前后后搞了几天,终于全部解决。

这个程序基于 servlet/jsp+spring+hibernate, 数据库是MySql。我把问题分解为下面的问题
    0) MySql支持中文
    1) 字符串资源支持多国语言
    2) 页面显示中文
    3) 提交中文form
    4) Ajax中包括中文

为了问题简单,server端都使用unicode,用utf8编码,包括MySql。

1 MySql支持中文

在mysql.ini中
default-character-set=utf8

在spring的context定义中,作如下设置
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="url">
        <value><![CDATA[jdbc:mysql://localhost/echo?useUnicode=true&characterEncoding=UTF-8]]></value>
    </property>
</bean>

2 字符串资源支持多国语言


字符串资源支持多国语言
也就是根据浏览器的locale,页面元素显示为用户能懂的文字。这里需要用到资源文件。

3 页面显示中文

对于servlet,写一个filter,在里面设置response.setContentType("text/html; charset=UTF-8");
对于jsp,在文件头加一行,<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

4 提交中文form

还是在上面的filter中,在从request里取得parameters之前,指定编码方式
request.setCharacterEncoding("utf8");这样request.getParameter的适合,就会用utf8的解码方式。

5 Ajax中包括中文

我用的是buffalo,它已经解决好这个问题了。所有中文都会用utf8编码后提交。

TAG: java 本地化

 

评分:0

我来说两句

Open Toolbar