国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Java Web開(kāi)發(fā)中國(guó)際化問(wèn)題的設(shè)計(jì)與實(shí)現(xiàn)

2010-11-07 08:20:26菏澤學(xué)院計(jì)算機(jī)與信息工程系274000
中國(guó)科技信息 2010年20期
關(guān)鍵詞:字符集字符應(yīng)用程序

蘇 蘊(yùn) 菏澤學(xué)院計(jì)算機(jī)與信息工程系 274000

Java Web開(kāi)發(fā)中國(guó)際化問(wèn)題的設(shè)計(jì)與實(shí)現(xiàn)

蘇 蘊(yùn) 菏澤學(xué)院計(jì)算機(jī)與信息工程系 274000

國(guó)際化問(wèn)題是Java Web技術(shù)開(kāi)發(fā)中備受矚目的課題。鑒于此,本文在分析對(duì)字符集選擇的基礎(chǔ)上,介紹了一種高效的解決方案——使用J2SE資源綁定的方式。

1 、引言

世界經(jīng)濟(jì)日益全球化推動(dòng)了人們對(duì)基于 Web 的軟件的需求,因?yàn)樵S多國(guó)家的用戶都能訪問(wèn)Web軟件。然而,隨著信息的國(guó)際化,如何動(dòng)態(tài)構(gòu)建一個(gè)具有各種不同語(yǔ)言的Web應(yīng)用程序,成為面向國(guó)際應(yīng)用的企業(yè)和個(gè)人需要考慮的問(wèn)題。

2 、字符集的應(yīng)用

為了能在計(jì)算機(jī)中表示不同語(yǔ)言中字符,每個(gè)國(guó)家(或區(qū)域)都規(guī)定了計(jì)算機(jī)信息交換用的字符編碼集,如美國(guó)的ASCII,中國(guó)GB2312和GBK,日本的JIS等。而不同語(yǔ)言客戶在瀏覽不同語(yǔ)言網(wǎng)頁(yè)時(shí),往往會(huì)因?yàn)橄嗷ラg所使用字符集無(wú)法兼容而出現(xiàn)亂碼情況。

Java內(nèi)部采用Unicode字符集,Unicode字符集,對(duì)每一種語(yǔ)言的每個(gè)字符制定了統(tǒng)一且唯一的用兩個(gè)字節(jié)(也有四字節(jié)的)來(lái)表示的編碼,滿足跨語(yǔ)言、跨平臺(tái)的字符解碼和轉(zhuǎn)換處理。但由于Unicode字符集不兼容ISO-8859-1字符集,占用的空間大(對(duì)于英文字母,Unicode也需要兩個(gè)字節(jié)來(lái)表示),而且不便于傳輸和存儲(chǔ),因此而產(chǎn)生了UTF字符集?,F(xiàn)在流行的UTF有2種:UTF-8和UTF-16。其中UTF-16和Unicode本身的編碼規(guī)范是一致的,而UTF-8不同,它定義了一種“區(qū)間規(guī)則”,這種規(guī)則可以和ISO-8859-1編碼保持最大程度的兼容,同時(shí)也可以用來(lái)表示所有語(yǔ)言的字符。因此,在開(kāi)發(fā)國(guó)際化Web應(yīng)用程序時(shí),UTF-8是一個(gè)最理想的選擇。

具體的做法是:

(1)所有HTML或JSP/Servlet動(dòng)態(tài)頁(yè)面指明使用UTF-8字符集,JSP文件本身也使用UTF-8編碼保存;

<%@page language="java" contentType="text/html; charset=UTF-8"%>;

;)

(2)Servlet 指明使用過(guò)濾器,使所有來(lái)自瀏覽器的請(qǐng)求(request)和響應(yīng)(response)均轉(zhuǎn)換為UTF-8;

request.setCharacterEncoding ("UTF-8");

response.setContentType("text/ html;charset= UTF-8");

(3)設(shè)定數(shù)據(jù)庫(kù)連接方式是UTF-8(例如:數(shù)據(jù)庫(kù)使用MySQL);

jdbc:mysql://localhost/ web_site?

useUnicode=true&characterEncoding= UTF-8;

(4)數(shù)據(jù)庫(kù)編碼指明為UTF-8。

3 、國(guó)際化技術(shù)的應(yīng)用

為了滿足國(guó)際化的需求,被開(kāi)發(fā)的Web應(yīng)用程序應(yīng)該能夠在不做任何修改的情況下,就可以在不同的地區(qū)和不同的語(yǔ)言環(huán)境下,按照當(dāng)?shù)氐恼Z(yǔ)言和格式習(xí)慣顯示字符。一種傳統(tǒng)的解決問(wèn)題的方法是:存儲(chǔ)多組JSP,每組JSP都用不同的語(yǔ)言編碼,然后根據(jù)用戶的地區(qū)選擇在這些JSP之間切換。這種解決方案的最大不足在于表示層JSP頁(yè)面將非常冗余,當(dāng)需要更新特定于語(yǔ)言的JSP集時(shí),所有冗余編碼的JSP集都必須同時(shí)更新,對(duì)于一個(gè)中等規(guī)模的項(xiàng)目而言,這會(huì)造成冗長(zhǎng)的、容易出錯(cuò)的更新。

最理想的實(shí)現(xiàn)國(guó)際化的方法是將要顯示的字符內(nèi)容從程序中分離,然后統(tǒng)一存儲(chǔ)到一個(gè)資源包中,當(dāng)顯示時(shí),從包中取出和Locale對(duì)象相一致字符內(nèi)容。這種方案利用了J2SE在資源綁定中對(duì)地區(qū)的支持,即只在需要的時(shí)候在采用特定于地區(qū)的文本字符串。

3.1 資源包文件的創(chuàng)建

在編寫(xiě)國(guó)際化程序時(shí),要為不同的國(guó)家和語(yǔ)言編寫(xiě)不同的資源類(lèi),這些資源類(lèi)同屬于一個(gè)資源系列,共享同一個(gè)基名。不同語(yǔ)言所對(duì)應(yīng)的資源類(lèi)的名稱(chēng)為基名加上ISO-639標(biāo)準(zhǔn)的語(yǔ)言代碼,而應(yīng)用于某個(gè)特定國(guó)家或地區(qū)的資源類(lèi)名稱(chēng),則是基名和語(yǔ)言代碼后加上ISO-639標(biāo)準(zhǔn)的國(guó)家或地區(qū)代碼。例如:為了能使中文國(guó)家地區(qū)以及英語(yǔ)國(guó)家地區(qū)的用戶都能以本地語(yǔ)言的形式顯示某網(wǎng)站的頁(yè)面內(nèi)容,可以創(chuàng)建一個(gè)資源包的基名為“MyResource”,則中文國(guó)家的特定資源屬于MyResource_zh_CN類(lèi),英語(yǔ)國(guó)家的特定資源屬于MyResource_en類(lèi)。

針對(duì)不同的語(yǔ)言和國(guó)家,分別提供一個(gè)屬性文件,屬性文件的命名遵照資源類(lèi)的命名方式,擴(kuò)展名為.properties,將所有的字符串資源以鍵值對(duì)的形式寫(xiě)入到屬性文件中。

3.2 資源包文件的編碼轉(zhuǎn)化

由于Java的資源綁定機(jī)制只接受ASCII編碼的屬性文件,因此,對(duì)于資源包文件中的非ASCII碼字符,需要將其轉(zhuǎn)換為相應(yīng)的Unicode碼,其格式為uXXXX。這里可以使用JDK開(kāi)發(fā)工具包里的native2ascii命令進(jìn)行轉(zhuǎn)換。其命令為:

Native2ascii -encoding gb2312 MyResource.tmp MyResource_zh_CN.properties

將MyResource.tmp文件中的中文字符轉(zhuǎn)換為Unicode編碼保存到MyResource_zh_CN.properties文件中。

3.3 使用過(guò)濾器設(shè)置特定國(guó)家或地區(qū)的Locale對(duì)象

可以在用戶訪問(wèn)網(wǎng)站首頁(yè)面index.jsp時(shí),對(duì)此請(qǐng)求進(jìn)行過(guò)濾。具體情形如下圖所示:

在過(guò)濾器中,調(diào)用Locale類(lèi)的getDefault方法得到當(dāng)前平臺(tái)默認(rèn)的語(yǔ)言環(huán)境值,由于用戶在訪問(wèn)該Web應(yīng)用程序期間,一般不會(huì)改變顯示語(yǔ)言。因此,需要把特定的地區(qū)對(duì)象和會(huì)話關(guān)聯(lián)起來(lái)。

3.4 資源包的訪問(wèn)

在JSP頁(yè)面中,首先獲取與當(dāng)前會(huì)話相關(guān)聯(lián)的Locale對(duì)象,該對(duì)象代表了特定的國(guó)家或地區(qū)。其次,根據(jù)該Locale對(duì)象,獲取與其綁定的某個(gè)資源包文件。這里可以調(diào)用java.util.ResourceBundle類(lèi)中的getBundle方法:

public static final ResourceBundle getBundle(String baseName,Locale locale)

最后,利用ResourceBundle類(lèi)的getString()方法得到相應(yīng)語(yǔ)言版本的字符串。

public final String getString (String key)

4 、結(jié)束語(yǔ)

使用J2SE資源綁定的方式解決國(guó)際化問(wèn)題,能夠根據(jù)不同的Locale對(duì)象加載不同的資源,顯示給用戶。要修改顯示信息時(shí),只需要修改相應(yīng)的資源文件,對(duì)于程序部分,不需要做任何的修改。因此,可以說(shuō)它是目前在Web應(yīng)用程序開(kāi)發(fā)中,解決國(guó)際化問(wèn)題效率最高的方案。

[1]李謹(jǐn).淺析基于JSP的維、漢雙語(yǔ)網(wǎng)站的開(kāi)發(fā)技術(shù)[J].科技創(chuàng)新導(dǎo)報(bào).2009(2)

[2]Ivor Horton.Java 2入門(mén)經(jīng)典[M].北京:機(jī)械工業(yè)出版社.2006

[3]孫鑫.Java Web開(kāi)發(fā)詳解[M].北京:電子工業(yè)出版社.2007

[4]耿祥義,張躍平.JSP實(shí)用教程[M].北京:清華大學(xué)出版社.2007

TP391.41

A

10.3969/j.issn.1001-8972.2010.20.043

Java Web;國(guó)際化;字符集

猜你喜歡
字符集字符應(yīng)用程序
尋找更強(qiáng)的字符映射管理器
MySQL數(shù)據(jù)庫(kù)字符集的問(wèn)題研究
字符代表幾
一種USB接口字符液晶控制器設(shè)計(jì)
電子制作(2019年19期)2019-11-23 08:41:50
刪除Win10中自帶的應(yīng)用程序
ORACLE字符集問(wèn)題的分析
消失的殖民村莊和神秘字符
ORACLE數(shù)據(jù)庫(kù)字符集問(wèn)題及解決方法
醫(yī)院信息系統(tǒng)Oracle數(shù)據(jù)庫(kù)中導(dǎo)入數(shù)據(jù)中文亂碼的解決技術(shù)
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
泰宁县| 台山市| 阜康市| 青铜峡市| 图木舒克市| 神农架林区| 景德镇市| 新蔡县| 丹棱县| 晋江市| 大竹县| 乌什县| 正定县| 嘉定区| 高淳县| 淮北市| 临清市| 建阳市| 漯河市| 耒阳市| 荆州市| 从化市| 高唐县| 唐海县| 资讯 | 疏附县| 航空| 北川| 伊宁县| 微山县| 会昌县| 满洲里市| 南陵县| 隆子县| 阜城县| 云梦县| 南华县| 彩票| 武安市| 天津市| 华亭县|