您所在的位置:开发 > Java > Java EE的国际化解决方案(2)

Java EE的国际化解决方案(2)

2007-12-11 13:11 陈春 goCom 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!

本文介绍Java EE应用程序开发者如何实现不同国家或地区的用户应用界面上看到的文字内容是自己的语言,并且可以选择其他语言来显示。

AD:

假如当前浏览器环境为zh_CN,那么上述tag生成的html代码如下:

<script language=”javascript”> 
var Message= {
getString: function(){ return eval("this." + arguments[0]);}
};
</script>
<SCRIPT SRC="/resources/zh_CN/scripts/message.js" LANGUAGE="javascript"></SCRIPT>
<LINK HREF="/resources/zh_CN/css/style.css" REL="stylesheet" TYPE="text/css"/>
<IMG SRC="/resources/zh_CN/images/title.gif" WIDTH="300" HEIGHT="120" BORDER="0" ALT="title">

值得注意的是,对于js资源引用需要插入一段javascript代码,对应的国际化资源内容如下:

Message.calendar_JANUARY="一月"; 
Message.calendar_FEBRUARY="二月";
Message.calendar_MARCH="三月";
Message.calendar_APRIL="四月";
Message.calendar_MAY="五月";
Message.calendar_JUNE="六月";
Message.calendar_JULY="七月";
Message.calendar_AUGUST="八月";
Message.calendar_SEPTEMBER="九月";
Message.calendar_OCTOBER="十月";
Message.calendar_NOVEMBER="十一月";
Message.calendar_DECEMBER="十二月";

国际化时需作如下替换:

原代码:

var mon1 = “一月”;

新代码:

var mon1 = Message.getString(“ calendar_JANUARY”);

2、编码国际化

2.1、服务器配置

服务器端配置主要包括两方面,其一要指定环境语言,其二要指定字符集编码。

1、环境语言

一般服务器的JVM缺省语言和操作系统平台一致,但也可以为JVM指定特定的缺省语言。具体配置,例如:-Duser.language=zh -Duser.region=CN

2、字符集编码

一般情况下,一种语言会对应一种或多种字符集编码。例如中文可以用GB2312编码来显示,日文可以用Shift-JIS编码来显示。一旦遇到客户端浏览器设置的是GB2312编码,而页面上有日文或韩文的内容,就不能正确显示了。假如采用UTF-8编码方式就不会出现这种情况了,因为UTF-8编码几乎被所有的操作系统平台支持,并且包含了世界上绝大多数语言。

为统一编码,我们需要在JVM参数、浏览器请求、Web Server响应三个方面进行配置。具体如下:

a、JVM参数

-Dfile.encoding=UTF-8,针对EOS还需指定-Dxml.encoding=UTF-8

b、浏览器请求

如果Web Serve支持jsp2.4规范,我们可以直接在WEB-INF目录下的web.xml中指定编码方式。如:

<jsp-config> 
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config> 

设置完毕,还需检查jsp、html页面中的字符显示设置是不是UTF-8,或者直接把页面显示字符设置删除。例如:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

c、Web Server响应

如果是jsp,则需指定<% request. setCharacterEncoding(“UTF-8”); %>

如果是servlet,则需调用 HttpServletRequest. setCharacterEncoding(“UTF-8”);

这两条语句均要在放在getParameterValue(),getParameterValues()语句之前。

3、文件编码

如果一个文件原编码是GBK,现要以UTF-8编码显示,我们会发现除了ASCII码之外的字符都是乱码。其原因是UTF-8仅仅和ASCII码兼容,除此之外同一字符的编码值并不相等。为解决这一问题,我们还需把Web应用涉及到的jsp、html、css、js等文本文件的格式转换成UTF-8编码。又由于windows操作系统识别UTF-8文件时,是靠该文件的头三个字节的内容判断的,而java虚拟机并不识别此文件头(BOM),故转换编码时一定不能包含BOM头。

【相关文章】

【责任编辑:火凤凰 TEL:(010)68476606】

内容导航

网友评论TOP5

查看所有评论(

提交评论

  1. 专题:JVM编程语言,你的选择?
  2. 宅男程序员给老婆课程之11:域模型

文章排行

本月本周24小时

热点专题

更多>>

读书

超级网管员——网络基础
本书全面系统地概括了计算机网络的基本理论,详细阐述了OSI模型与网络协议、网络规划与综合布线、对等网络与服务器/客户端网络、

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 移动互联网生活门户 灵客风LinkPhone