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
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。