温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

J2EE Web组件中中文及相关的问题是什么

发布时间:2022-01-12 09:27:19 来源:亿速云 阅读:113 作者:柒染 栏目:编程语言

J2EE Web组件中中文及相关的问题是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

J2EE Web组件中中文及相关的问题

1、  国际化XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

在前面第五小节中的form.JSP里,也许台湾省的客户更喜欢

我们首先在webappWEB-INFclasses中创建三个区域相关的资源文件。中文简体版:

#LocalStrings_zh_CN.properties

page.title=国际化

form.label=请输入你的姓名

form.button=提交

中文繁体版:

#LocalStrings_zh_TW.properties

page.title=國際化

form.label=請輸入您的姓名

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这三个文件均以系统缺省的编码方式保存。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;

  }

}

从浏览器访问form.jsp,我们应该看到正确的输出,然后通过浏览的Inte.NET选项,将浏览器的语言设置成“中文(台湾)[zh-tw]”,再访问form.jsp,我们就能看到繁体字的提示信息了;再将浏览器语言设置成“英语(美国)[en-us]”,再访问form.jsp。为什么要用LocalStrings到重新编码这些字符串呢,查看ResourceBundle的源程序可以发现,它读取文件中时,并没有对字符串进行编码,所以我们不得不在LocalStrings中对使用正确的编码对这些区域相关的字符串编码。

2、  一些建议

我们用J2EE(Java 2 Enterprise Edition/ Java 2 Platform, Enterprise Edition,Java 2企业版)开发的企业应用程序,可能在一些支持J2EE规范的服务器之间移植,而这些服务器的平台也可能不同。我们的客户的操作系统或所使用的浏览器,也有可能不同,所以我们应努力遵循一些建议:

l  从请求头中判断出用户的操作系统、浏览器和所使用的语言,而用适当的方法进行相应的响应头中的charset的设置。

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

l  对于JSP文件,只要页面中存在不被服务器忽略的含非英文字符的常量字符串,就应该对page指令中的pageEncoding属性进行相应的设置。

l  使用过滤器来设置通过

ServletRequest.setCharaterEncoding(String encoding);

来设置请求实体的编码,而不是在每个JSP或Servlet中设置。抛弃在Servlet设置content-Type的习惯,让过滤器根据不同的资源和用户对象通过

ServletResponse.setContentyType(String type);

来设置。

l  尽量使用UTF-8作编码,而不是GBK或GB2312。

l  充分考滤到底层数据库所使用的编码,它可能在应用程序的移植中带来麻烦。

l  不能简单有效地判断出用户浏览器编码提交的数据所使用的编码,是程序员的一大遗憾,如果w3c对现有的标准进行扩展,修改form元素的enctype,让这个属性也完全兼容MIME的charset,Web应用程序的开发,又少去了一些麻烦。

附录A. 所有的实验,环境配置如下:

l  操作系统  MS windows 2000 Server

l  区域设置  中文(中国)

l  系统语言  中文(简体)  默认

l  浏览器  Microsoft Internet Explorer 6.0b

l  Java虚拟机  J2SDK 1.4.0-b92

l  Java服务器  apache tomcat 4.0.4

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI