信息科技
中国科技信息2010年第20期CHINASCIENCEANDTECHNOLOGYINFORMATIONOct.2010
DOI:10.3969/j.issn.1001-8972.2010.20.043
JavaWeb开发中国际化
问题的
设计与实现
苏蕴菏泽
计算机与信息工程系274000
摘要
2、字符集的应用
为了能在计算机中表示不同语言中字符,每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的ASCII,中国GB2312和GBK,日本的JIS等。而不同语言客户在浏览不同语言网页时,往往会因为相互间所使用字符集无法兼容而出现乱码情况。Java内部采用Unicode字符集,Unicode字符集,对每一种语言的每个字符制定了统一且唯一的用两个字节(也有四字节的)来表示的编码,满足跨语言、跨平台的字符解码和转换处理。但由于Unicode字符集不兼容ISO-8859-1字符集,占用的空间大(对于英文字母,Unicode也需要两个字节来表示)而且不便于传输和存储,,因此而产生了UTF字符集。现在流行的UTF有2种:UTF-8和UTF-16。其中UTF-16和Unicode本身的编码规范是一致的,而UTF-8不同,它定义了一种“区间规则”,这种规则可以和ISO-8859-1编码保持最大程度的兼容,同时也可以用来表示所有语言的字符。因此,在开发国际化Web应用
程序时,UTF-8是一个最理想的选择。具体的做法是:
国际化问题是JavaWeb技术开发中备受瞩目的课题。鉴于此,本文在分析对字符集选择的基础上,介绍了一种高效的解决
方案——使用J2SE资源绑定的方式。关键词JavaWeb;国际化;字符集中图分类号:TP391.41文献标识码:A
1、引言
世界
经济日益全球化推动了人们对基于Web的
软件的需求,因为许多国家的用户都能访问Web软件。然而,随着信息的国际化,如何动态构建一个具有各种不同语言的Web应用程序,成为面向国际应用的企业和个人需要考虑的问题。
(1)所有
HTML或
JSP/Servlet动态页面指明使用UTF-8字符集,JSP文件本身也使用UTF-8编码保存;<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%>;<Metahttp-equiv="Content-Type"Content="text/html;charset=UTF-8">;)(2)Servlet指明使用过滤器,使所有来自浏览器的请求(request)和响应(response)均转换为UTF-8;request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");(3)设定数据库连接方式是UTF-8(例如:数据库使用MySQL);jdbc:
mysql://localhost/
web_site?useUnicode=true&characterEncoding=UTF-8;(4)数据库编码指明为UTF-8。
3、国际化技术的应用
为了满足国际化的需求,被开发
-112-
的Web应用程序应该能够在不做任何修改的情况下,就可以在不同的地区和不同的语言环境下,按照当地的语言和格式习惯显示字符。一种传统的解决问题的方法是:存储多组JSP,每组JSP都用不同的语言编码,然后根据用户的地区选择在这些JSP之间切换。这种解决方案的最大不足在于表示层JSP页面将非常冗余,当需要更新特定于语言的JSP集时,所有冗余编码的JSP集都必须同时更新,对于一个中等规模的项目而言,这会造成冗长的、容易出错的更新。最理想的实现国际化的方法是将要显示的字符内容从程序中分离,然后统一存储到一个资源包中,当显示时,从包中取出和Locale对象相一致字符内容。这种方案利用了J2SE在资源绑定中对地区的支持,即只在需要的时候在采用特定于地区的文本字符串。3.1资源包文件的创建在编写国际化程序时,要为不同的国家和语言编写不同的资源类,这些资源类同属于一个资源系列,共享同一个基名。不同语言所对应的资源类的名称为基名加上ISO-639标准的语言代码,而应用于某个特定国家或地区的资源类名称,则是基名和语言代码后加上ISO-639标准的国家或地区代码。例如:为了能使中文国家地区以及英语国家地区的用户都能以本地语言的形式显示某网站的页面内容,可以创建一个资源包的基名为“MyResource”,则中文国家的特定资源属于MyResource_zh_CN类,英语国家的特定资源属于MyResource_en类。针对不同的语言和国家,分别提供一个属性文件,属性文件的命名遵照资源类的命名方式,扩展名为.properties,将所有的字符串资源以键值对的形式写入到属性文件中。3.2资源包文件的编码转化由于Java的资源绑定机制只接受ASCII编码的属性文件,因此,对于资源包文件中的非ASCII码字符,需