科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Java EE的国际化解决方案

Java EE的国际化解决方案

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:陈春 来源:goCom 2007年12月26日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

假如当前浏览器环境为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头。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章