关于Struts中文问题的解决方法
碰到struts中文问题时,在网上查了很多资料,想必碰到过此类问题的朋友也都查过,也都看到过差不多是同一篇文章。
但是依法炮制了若干遍,JSP页面上仍然显示的是乱码,无奈,实践出真知,只好自己一遍一遍的试验,终于成功了,在windows的weblogic8下,和unix的`weblogic8下均正确显示汉字。
以下是代码内容:
首先是JSP页面的内容,最简化的一个form
TestItem English :
TestItem Chinese :
注意,页面的字符集一定要定义成gb2312,否则显示不了正确的汉字了,代码上半部的logic:iterate 标签是 action 处理完毕后,返回给页面显示的。至于form提交的部分,由struts机制去做了,我只把 testitem_config 这个 action 的原代码给出,大家就看明白了:
public class TestItemConfigAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception {
TestItemConfigForm pcForm = (TestItemConfigForm)form;
String[] entryIndexArray = ntrypro();
String testPartKey;
ArrayList testPartOptionsEn = new ArrayList();
ArrayList testPartOptionsCn = new ArrayList();
ServletContext context = getServlet()。getServletContext();
String file = ealPath(“/WEB-INF/classes/resource/erties”);
PropertiesFileOperate pOperate = new PropertiesFileOperate(file);
Properties property = roperties();
int testpartnum = eInt(roperty(“”));
if(perateFlag() != null && !“”。equals(perateFlag())) {
if(eInt(perateFlag()) == 1 &&
estItemEn() != null && !“”。equals(estItemEn())){
String addKeyEn = “.” + (testpartnum + 1);
String addKeyCn = “.” + (testpartnum + 1);
String addValueEn = estItemEn()。trim();
String addValueCn = estItemCn()。trim();
String addValueCnWirite = new String(ytes(“ISO-8859-1”));
fyProperties(“”, (testpartnum + 1) + “”);
roperties(addKeyEn, addValueEn);
roperties(addKeyCn, addValueCnWirite);
File();
pOperate = null;
}
if(eInt(perateFlag()) == 2 &&
estItemEn() != null && !“”。equals(estItemEn())){
int entryIndex = eInt(estItemIndex()。trim());
String addKeyEn = “.” + entryIndex;
String addKeyCn = “.” + entryIndex;
String addValueEn = estItemEn()。trim();
String addValueCn = estItemCn()。trim();
String addValueCnWirite = new String(ytes(“ISO-8859-1”));
fyProperties(addKeyEn, addValueEn);
fyProperties(addKeyCn, addValueCnWirite);
File();
pOperate = null;
}
if(eInt(perateFlag()) == 3){
for(int i = 0; i 《 th; i++){
String indexEntry = (entryIndexArray[i]。substring(1, entryIndexArray[i]。indexOf(“,”)))。trim();
String addKeyEn = “.” + indexEntry;
String addKeyCn = “.” + indexEntry;
fyProperties(addKeyEn, “”);
fyProperties(addKeyCn, “”);
}
File();
pOperate = null;
}
}
PropertiesFileOperate pOperateShow = new PropertiesFileOperate(file);
Properties propertyShow = roperties();
int testpartNumber = eInt(roperty(“”));
ArrayList array = new ArrayList();
for(int i = 1; i 《= testpartNumber; i++){
ArrayList arr = new ArrayList();
testPartKey = “.”+i;
if (roperty(testPartKey) != null &&
!“”。equals(roperty(testPartKey))){
(i+“”);
(roperty(testPartKey));
(roperty(testPartKey));
testPartKey = “.”+i;
(new String(roperty(testPartKey)。getBytes(),“gb2312”));
(roperty(testPartKey));
(arr);
}
}
ttribute(“box”,array);
t(mapping, request);
return Forward(“testitemone”);
}
}
这个 action 并不复杂, 首先它定义了一个 properties 文件 erties,在web服务器下的/WEB-INF/classes/resource/下面,用来记录页面上输入的内容,由于 String addValueCnWirite = new String(ytes(“ISO-8859-1”)) 这个语句进行了字符转换,所以 properties 文件中记录的内容大概都是这样子的:
.29=u7F1Du9699u5F02u5E38
如果把程序改成记录到数据库中,也应该是这个样子,属于Unicode编码吧。
而当要把记录的内容输出到客户端时候,new String(roperty(testPartKey)。getBytes(),“gb2312”)) 这个语句又把Unicode编码转换成了GB2312,所以要求JSP页面charset=gb2312,呵呵,这样在windows 和 unix两个系统下都可以正常显示中文了,绝对没有问题。
-
Java学习如何走出第一步
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。下面是小编整理的关于Java学习如何走出第一步,欢迎大家参考!Java开发平台的种类很多,在这篇文章中我主要以J2SE为例子。J2SE几乎是开发所有Java应用...
-
java认证考试科目设置
Java相关的认证有四个,分别是SCJP、SCWD、SCJD、SCAJ,考试时皆以英文出题,但在台湾SCJP考试可以选择使用繁体中文版考题。这几项认证考试的特点分述如下:SCJP(SunCertifiedJavaProgrammer):测试Java程序设计的观念和能力,内容偏重于Java语法和JDK内容。共59题复选及...
-
Java程序员要具备哪些知识
Java是一门最受欢迎而且使用最广泛的编程语言,作为java程序员,我们要学习什么知识?在这里,yjbys小编为大家分享的`是java程序员必学基本知识,希望对大家有所帮助!程序员需要:1CoreJava部分这是最基础的,对于一个java高级开发/设计人员,你需要对这一部分达到精通的水...
-
2017年java面试题及答案
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。下面是小编整理的关于2017年java面试题及答案,欢迎大家练习!java面试题及答案1、String是最基本的数据类型吗?答:不是。Java中的基本数据类型只有8个...
相关文章
- iOS8.3越狱后修复Cydia Substrate不兼容问题解决方法
- 关于打印时提示您不是administrator无法打印问题的解决方法
- MySQL安装时出现current root password的解决方法
- Struts中文问题怎么解决
- 提示operating system not found的解决方法
- Thinkpad笔记本开机显示Tointerrruptnormalstartup解决方法
- 关于JavaScript substring()的使用方法
- Request timed out网卡的故障解决方法
- 关于struts的解决方法
- 浅谈出现PressF1toResume的原因及解决方法