溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

J2EE Web組件中中文及相關(guān)的問(wèn)題是什么

發(fā)布時(shí)間:2022-01-12 09:27:19 來(lái)源:億速云 閱讀:126 作者:柒染 欄目:編程語(yǔ)言

J2EE Web組件中中文及相關(guān)的問(wèn)題是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

J2EE Web組件中中文及相關(guān)的問(wèn)題

1、  國(guó)際化XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

在前面第五小節(jié)中的form.JSP里,也許臺(tái)灣省的客戶更喜歡

我們首先在webappWEB-INFclasses中創(chuàng)建三個(gè)區(qū)域相關(guān)的資源文件。中文簡(jiǎn)體版:

#LocalStrings_zh_CN.properties

page.title=國(guó)際化

form.label=請(qǐng)輸入你的姓名

form.button=提交

中文繁體版:

#LocalStrings_zh_TW.properties

page.title=國(guó)際化

form.label=請(qǐng)輸入您的姓名

form.button=提交

英文版:

#LocalStrings_tw.properties

page.title=internationalization

form.label=Please enter your name

form.button=submit

LocalStrings_zh_CN.properties、LocalStrings_zh_TW.properties和LocalStrings_tw.properties這三個(gè)文件均以系統(tǒng)缺省的編碼方式保存。form.jsp改成:

<%@ page="" contenttype="text/html;charset=utf-8">

<%@ page="" import="beans.LocaleStrings">

<%localstrings lss="new">

 

 

 

beans.LocalStrings的源文件如下:

package beans;

import Java.util.ResourceBundle;

import java.io.UnsupportedEncodingException;

import java.util.Locale;

public class LocalStrings

{

  protected ResourceBundle rb;

  protected boolean encoded;

  public LocalStrings(String baseName, Locale locale)

  {

  this.rb = ResourceBundle.getBundle(baseName, locale);

  if(locale.getCountry().equals("CN") || locale.getCountry().equals("TW"))

  encoded = true;

  }

  public String getString(String key)

  {

  String value = rb.getString(key);

  if(encoded)

  {

  try

  {

  byte bs[] = value.getBytes("ISO-8859-1");

  return new String(bs, "GBK");

  }

  catch(UnsupportedEncodingException uee)

  {

  return value;

  }

  }

  return value;

  }

}

從瀏覽器訪問(wèn)form.jsp,我們應(yīng)該看到正確的輸出,然后通過(guò)瀏覽的Inte.NET選項(xiàng),將瀏覽器的語(yǔ)言設(shè)置成“中文(臺(tái)灣)[zh-tw]”,再訪問(wèn)form.jsp,我們就能看到繁體字的提示信息了;再將瀏覽器語(yǔ)言設(shè)置成“英語(yǔ)(美國(guó))[en-us]”,再訪問(wèn)form.jsp。為什么要用LocalStrings到重新編碼這些字符串呢,查看ResourceBundle的源程序可以發(fā)現(xiàn),它讀取文件中時(shí),并沒(méi)有對(duì)字符串進(jìn)行編碼,所以我們不得不在LocalStrings中對(duì)使用正確的編碼對(duì)這些區(qū)域相關(guān)的字符串編碼。

2、  一些建議

我們用J2EE(Java 2 Enterprise Edition/ Java 2 Platform, Enterprise Edition,Java 2企業(yè)版)開(kāi)發(fā)的企業(yè)應(yīng)用程序,可能在一些支持J2EE規(guī)范的服務(wù)器之間移植,而這些服務(wù)器的平臺(tái)也可能不同。我們的客戶的操作系統(tǒng)或所使用的瀏覽器,也有可能不同,所以我們應(yīng)努力遵循一些建議:

l  從請(qǐng)求頭中判斷出用戶的操作系統(tǒng)、瀏覽器和所使用的語(yǔ)言,而用適當(dāng)?shù)姆椒ㄟM(jìn)行相應(yīng)的響應(yīng)頭中的charset的設(shè)置。

l  盡量不在servlet中使用含非英文字符的常量字符串。

l  對(duì)于JSP文件,只要頁(yè)面中存在不被服務(wù)器忽略的含非英文字符的常量字符串,就應(yīng)該對(duì)page指令中的pageEncoding屬性進(jìn)行相應(yīng)的設(shè)置。

l  使用過(guò)濾器來(lái)設(shè)置通過(guò)

ServletRequest.setCharaterEncoding(String encoding);

來(lái)設(shè)置請(qǐng)求實(shí)體的編碼,而不是在每個(gè)JSP或Servlet中設(shè)置。拋棄在Servlet設(shè)置content-Type的習(xí)慣,讓過(guò)濾器根據(jù)不同的資源和用戶對(duì)象通過(guò)

ServletResponse.setContentyType(String type);

來(lái)設(shè)置。

l  盡量使用UTF-8作編碼,而不是GBK或GB2312。

l  充分考濾到底層數(shù)據(jù)庫(kù)所使用的編碼,它可能在應(yīng)用程序的移植中帶來(lái)麻煩。

l  不能簡(jiǎn)單有效地判斷出用戶瀏覽器編碼提交的數(shù)據(jù)所使用的編碼,是程序員的一大遺憾,如果w3c對(duì)現(xiàn)有的標(biāo)準(zhǔn)進(jìn)行擴(kuò)展,修改form元素的enctype,讓這個(gè)屬性也完全兼容MIME的charset,Web應(yīng)用程序的開(kāi)發(fā),又少去了一些麻煩。

附錄A. 所有的實(shí)驗(yàn),環(huán)境配置如下:

l  操作系統(tǒng)  MS windows 2000 Server

l  區(qū)域設(shè)置  中文(中國(guó))

l  系統(tǒng)語(yǔ)言  中文(簡(jiǎn)體)  默認(rèn)

l  瀏覽器  Microsoft Internet Explorer 6.0b

l  Java虛擬機(jī)  J2SDK 1.4.0-b92

l  Java服務(wù)器  apache tomcat 4.0.4

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI