CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

100分请教jsp中读取中文xml出现的乱码问题!

楼主steveyue(约翰岳)2005-04-11 13:05:43 在 Java / Web 开发 提问

我创建了一个menu-config.xml,内容中包含中文字符,代码如下:  
  <?xml   version="1.0"   encoding="gb2312"?>  
  <MenuConfig>  
  <Menus>  
  <Menu   name="articlemanagement">  
  <title>文章管理</title>  
  <Item   name="addarticle"   purview="1">  
  <title>增加文章</title>  
  <location>/hljhz/addarticle.jspa</location>  
  </Item>  
  <Item   name="addarticle1"   purview="1">  
  <title>增加文章1</title>  
  <location></location>  
  </Item>  
  </Menu>  
  <Menu   name="messagemanage">  
  <title>留言管理</title>  
  <Item   name="addmessage"   purview="2">  
  <title>增加留言</title>  
  <location></location>  
  </Item>  
  </Menu>  
  </Menus>  
  </MenuConfig>  
  然后我在jsp中读取这个文件,用的是jstl的标签  
  代码如下  
  <%@   page   contentType="text/html;   charset=gb2312"   language="java"%>  
  <%@   taglib   prefix="c"   uri="http://java.sun.com/jsp/jstl/core"   %>  
  <%@   taglib   prefix="fmt"   uri="http://java.sun.com/jsp/jstl/fmt"   %>  
  <HTML>  
  <HEAD>  
  <META   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <META   name="GENERATOR"   content="IBM   Software   Development   Platform">  
  <TITLE>test1.jsp</TITLE>  
  </HEAD>  
  <BODY>  
  <c:import   var="docString"   url="../WEB-INF/menu-config.xml"/>  
  <x:parse   var="doc"   doc="${docString}"/>  
  <x:set   var="d"   select="$doc//Menu[@name='articlemanagement']"/>  
  <x:out   select="$d/title"/>  
  </BODY>  
  </HTML>  
  结果在显示title时显示乱码,请问如何解决? 问题点数:120、回复次数:40Top

1 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-11 13:12:55 得分 20

我以前没有用dom或者jdom解析gb2312的xml都是没有中文问题的  
  可能问题是用了dom之类的parser  
   
  你可以用native2ascii转一下你的xml,endoing还是默认的  
  然后页面用utf-8编码  
  试试Top

2 楼steveyue(约翰岳)回复于 2005-04-11 13:19:24 得分 0

怎么转啊,我用的是jstl的xml标签。再说如果页面用utf-8编码,有些页面中固定的中文会乱码Top

3 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-11 13:22:43 得分 0

我知道你用的jstl标签,背后还是用Dom的  
   
  在%JAVA_HOME%/bin里面有个native2ascii.exe  
  你具体可以查toolsdoc里面的说明Top

4 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-11 13:23:52 得分 0

native2ascii   -utf8(编码格式)   转换前的文件名   转换后的文件名Top

5 楼steveyue(约翰岳)回复于 2005-04-11 13:27:23 得分 0

我来试一下Top

6 楼steveyue(约翰岳)回复于 2005-04-11 13:51:01 得分 0

C:\Documents   and   Settings\haozhong\IBM\rationalsdp6.0\workspace\hljhz\web\WEB-INF>native2ascii   -UTF-8   menu-config.xml   ss.xml  
  Usage:   native2ascii   [-reverse]   [-encoding   encoding]   [inputfile   [outputfile]]  
  这是我用native2ascii.exe时出现的信息,哪出错了?Top

7 楼steveyue(约翰岳)回复于 2005-04-11 14:04:31 得分 0

总提示Usage:   native2ascii   [-reverse]   [-encoding   encoding]   [inputfile   [outputfile]],哪有错误嘛Top

8 楼vcforever(累)回复于 2005-04-11 15:03:17 得分 0

帮朋友UP一下!:)Top

9 楼steveyue(约翰岳)回复于 2005-04-11 15:07:51 得分 0

具体应该在xml中设置编码为什么,然后使用native2ascii工具设置的编码为什么,然后页面中使用的编码为什么,请详细指出!  
  我现在在xml中使用gb2312,然后用native2ascii   -encoding   GB2312   xxx.xml   yyy.xml   ,页面用gb2312,结果显示出那些\u6587\u7ae0\u7ba1\u7406类的字符,根本没有显示中文,倒底应该怎么做?jstl可以处理这样的问题吗?Top

10 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-11 15:50:20 得分 0

我以前做得时候根本没有使用ascii2native加encoding参数  
  然后页面统一使用utf-8编码Top

11 楼steveyue(约翰岳)回复于 2005-04-11 15:54:34 得分 0

可是现在出现像我说的这样的情况,问题是不是在于jstl?Top

12 楼kk2486(龙)回复于 2005-04-11 17:16:55 得分 0

是不是还需要象<%@   taglib   prefix="fmt"   uri="http://java.sun.com/jsp/jstl/fmt"   %>设置x啊?Top

13 楼steveyue(约翰岳)回复于 2005-04-12 08:56:54 得分 0

我用dom4j处理时没有出现这样的问题,用jstl的<x:out   select="***"/>标签显示就是乱码,是不是在jstl中有什么默认的字符编码,它不支持中文?有没有高手知道?Top

14 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-12 12:11:52 得分 0

native2ascii     menu-config.xml   ss.xml  
  什么都不要,试试  
  Top

15 楼steveyue(约翰岳)回复于 2005-04-12 12:47:03 得分 0

没有用,显示的就是\u6587\u7ae0\u7ba1\u7406这类的东西  
  我在页面前加上  
  <fmt:requestEncoding   value="GB2312"/>  
  或  
  <fmt:setLocale   value="GB2312"/>  
  也都没有用Top

16 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-12 12:50:06 得分 0

晕,我已经说了好几次,页面要使用utf-8才能显示\uxxxx的中文啊Top

17 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-12 12:54:09 得分 0

呵呵,页面,页面。页同。   
  utf-8   utf-8Top

18 楼hongyan2004(spring+hibernate)回复于 2005-04-12 12:59:46 得分 0

utf-8  
  Top

19 楼steveyue(约翰岳)回复于 2005-04-12 13:00:30 得分 0

是的,我试了,不管用,你们说的是这样的对不对  
  menu-config.xml   里用gb2312编码,用native2ascii时也用gb2342编码,即  
  native2ascii   -GB2312   menu-config.xml   ss.xml  
  然后页面用UTF-8,对吧?  
  我都试了,显示的都是\u6587\u7ae0\u7ba1\u7406这类的东西Top

20 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-12 13:03:05 得分 0

不是的  
  native2ascii转换的时候不用任何编码  
  页面使用utf-8  
   
  我写struts的时候都是这么做,也一直没有问题啊  
  呵呵。。。Top

21 楼steveyue(约翰岳)回复于 2005-04-12 13:05:47 得分 0

其实,无论是menu-config.xml采用UTF-8然后页面采用UTF-8,它们之间的这几种可能的组合我都试过了,都是不行,而我用dom4j处理时没有任何问题,只是用jstl的<x:out   select="**">时,取出来的才是乱码,所以我想是不是jstl的标签问题,我试着用  
  <fmt:requestEncoding   value="GB2312"/>  
  或  
  <fmt:setLocale   value="GB2312"/>  
  仍然没有用。Top

22 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-12 13:09:01 得分 0

jstl默认编码肯定是iso-8859-1  
  所以你对xml转换的时候不能用什么其他编码Top

23 楼steveyue(约翰岳)回复于 2005-04-12 13:13:22 得分 0

jFresH_MaN(TM)你可能没完全明白我的意思,如你所说的方法,经过native2ascii转换后,用struts中<bean:message   key="***"/>或是jstl的<fmt:message   key="***"/>读取时确实都没有问题,但是现在我是用jstl中的<x:out   select="**"/>标签,它就出现问题了!  
   
  对啊,我看jstl的原代码了,发现它默认确实是iso-8859-1,但是如果我指定了  
  <fmt:requestEncoding   value="GB2312"/>  
  或  
  <fmt:setLocale   value="GB2312"/>  
  它为什么还是用iso-8859-1?Top

24 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-12 13:16:28 得分 0

你的意思是说不管有没有  
  <fmt:requestEncoding   value="GB2312"/>  
  或  
  <fmt:setLocale   value="GB2312"/>  
  页面使用了utf-8编码也是乱码?  
  我的意思是说,不用管jstl的编码,而直接在页面  
  <%@   page   contentType=".....utf-8  
  Top

25 楼lasthope(学生)回复于 2005-04-12 13:25:53 得分 0

去掉  
  <%@   page   contentType="text/html;   charset=gb2312"   language="java"%>  
  试试Top

26 楼steveyue(约翰岳)回复于 2005-04-12 13:26:00 得分 0

是的,在页面用  
  <%@   page   contentType="text/html;   charset=UTF-8"   language="java"%>  
  <%@   taglib   prefix="c"   uri="http://java.sun.com/jsp/jstl/core"   %>  
  <%@   taglib   prefix="fmt"   uri="http://java.sun.com/jsp/jstl/fmt"   %>  
  <HTML>  
  <HEAD>  
  <META   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <META   name="GENERATOR"   content="IBM   Software   Development   Platform">  
  <TITLE>test1.jsp</TITLE>  
  </HEAD>  
  <BODY>  
  <c:import   var="docString"   url="../WEB-INF/menu-config.xml"/>  
  <x:parse   var="doc"   doc="${docString}"/>  
  <x:set   var="d"   select="$doc//Menu[@name='articlemanagement']"/>  
  <x:out   select="$d/title"/>  
  </BODY>  
  </HTML>  
  这样的代码,由于menu-config.xml经过你说的方法  
  native2ascii     menu-config.xml   ss.xml(或是native2ascii     -encoding   GB2312   menu-config.xml   ss.xml)   编码  
  现在页面就变成了\u6587\u7ae0\u7ba1\u7406这类的东西  
  根本不显示中文Top

27 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-12 13:29:19 得分 0

<META   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  去掉这个啊Top

28 楼huguangwu(追风少年)回复于 2005-04-12 13:31:00 得分 0

哎,看得我头晕,两者的意思我都没明白,友情UP一下吧Top

29 楼steveyue(约翰岳)回复于 2005-04-12 13:32:58 得分 0

回   lasthope(学生)    
  如果去掉  
  <%@   page   contentType="text/html;   charset=gb2312"   language="java"%>  
  的话,页面中所有的中文都变成乱码了,呵呵  
   
  回   jFresH_MaN(TM)    
  这个  
  <META   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  这是我刚才照着上面复制过来的,实际上测试时我没有加这个  
  只有  
  <%@   page   contentType="text/html;   charset=UTF-8"   language="java"%>  
  问题依然Top

30 楼steveyue(约翰岳)回复于 2005-04-12 13:35:51 得分 0

回huguangwu(追风少年)  
  你现在只是晕  
  我现在脑袋都大了!  
  呵呵  
   
   
  不知有人用过<x:out   select="**"/>标签,出过这样的问题没有?Top

31 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-12 13:49:12 得分 0

哎,我也不知道该怎么搞了!  
  郁闷  
  帮你顶吧Top

32 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-12 13:58:14 得分 0

<?xml   version="1.0"   encoding="gb2312"?>  
   
  <?xml   version="1.0"   encoding="utf-8"?>  
   
  然后用native2ascii     menu-config.xml   ss.xml  
  <%@   page   contentType="text/html;   charset=UTF-8"   language="java"%>  
  <%@   taglib   prefix="c"   uri="http://java.sun.com/jsp/jstl/core"   %>  
  <%@   taglib   prefix="fmt"   uri="http://java.sun.com/jsp/jstl/fmt"   %>  
  <HTML>  
  <HEAD>  
  <META   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <META   name="GENERATOR"   content="IBM   Software   Development   Platform">  
  <TITLE>test1.jsp</TITLE>  
  </HEAD>  
  <BODY>  
  <c:import   var="docString"   url="../WEB-INF/menu-config.xml"/>  
  <x:parse   var="doc"   doc="${docString}"/>  
  <x:set   var="d"   select="$doc//Menu[@name='articlemanagement']"/>  
  <x:out   select="$d/title"/>  
  </BODY>  
  </HTML>  
   
  老大你全用,utf8改完试试。  
   
   
  Top

33 楼steveyue(约翰岳)回复于 2005-04-12 14:05:54 得分 0

回   jianghuxing(回头看看原来我一无所有)   我上面已经说了,这几种组合我全都试过了,  
  -----------------------------  
  menu-config.xml       |       jsp页面  
  -----------------------------  
  gb2312                         |       UTF-8  
  UTF-8                           |       gb2312    
  GBK                               |       UTF-8  
  UTF-8                           |       GBK  
  UTF-8                           |       UTF-8  
  gb2312                         |       gb2312    
  GBK                               |       GBK    
  -----------------------------  
  够全的了吧!!!!!!!  
   
  我现在试图把jstl的源代码改了呢,把默认的编码改成UTF-8,再重新给它编绎,打包!Top

34 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-12 14:50:09 得分 0

<%@   page   contentType="text/html;   charset=gb2312"   language="java"%>  
  <%@   taglib   uri="http://java.sun.com/jstl/core"   prefix="c"   %>  
  <%@   taglib   uri="http://java.sun.com/jstl/xml"   prefix="x"   %>  
  <%@   taglib   uri="http://java.sun.com/jstl/fmt"   prefix="fmt"   %>  
  <HTML>  
  <HEAD>  
   
  <META   name="GENERATOR"   content="IBM   Software   Development   Platform">  
  <TITLE>test1.jsp</TITLE>  
  </HEAD>  
  <BODY>  
  <c:import   var="docString"   url="//WEB-INF//ss.xml"/>  
  <x:parse   var="doc">  
  <?xml   version="1.0"   encoding="gb2312"?>  
  <MenuConfig>  
  <Menus>  
  <Menu   name="articlemanagement">  
  <title>文章管理</title>  
  <Item   name="addarticle"   purview="1">  
  <title>增加文章</title>  
  <location>/hljhz/addarticle.jspa</location>  
  </Item>  
  <Item   name="addarticle1"   purview="1">  
  <title>增加文章1</title>  
  <location></location>  
  </Item>  
  </Menu>  
  <Menu   name="messagemanage">  
  <title>留言管理</title>  
  <Item   name="addmessage"   purview="2">  
  <title>增加留言</title>  
  <location></location>  
  </Item>  
  </Menu>  
  </Menus>  
  </MenuConfig>  
   
  </x:parse>  
  <x:set   var="d"   select="$doc//MenuConfig//Menus//Menu[@name='articlemanagement']"/>  
  <x:out   select="$d/title"/>  
  </BODY>  
  </HTML>  
   
  楼主试试。Top

35 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-12 14:51:14 得分 0

我测试成功了Top

36 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-12 15:11:17 得分 100

<%@   taglib   uri="http://java.sun.com/jstl/fmt"   prefix="fmt"   %>  
  <HTML>  
  <HEAD>  
   
  <META   name="GENERATOR"   content="IBM   Software   Development   Platform">  
  <TITLE>test1.jsp</TITLE>  
  </HEAD>  
  <BODY>  
  <c:import   var="docString"   charEncoding="gb2312"   url="//WEB-INF//menu-config.xml"/>  
   
  <x:parse   var="doc"   xml="${docString}"/>  
   
   
  <x:set   var="d"   select="$doc//MenuConfig//Menus//Menu[@name='articlemanagement']"/>  
  <x:out   select="$d/title"/>  
  </BODY>  
  </HTML>  
  Top

37 楼steveyue(约翰岳)回复于 2005-04-12 15:39:21 得分 0

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!  
    jianghuxing(回头看看原来我一无所有)太谢谢了  
  在<c:import/>里加上charEncoding="gb2312"  
  就ok了,爽!!  
  加分加分!  
  Top

38 楼dxtjjevans(大虫)回复于 2005-04-12 15:48:33 得分 0

upTop

39 楼steveyue(约翰岳)回复于 2005-04-12 15:54:40 得分 0

TMD,我差点就改了人家jstl的源码!呵呵  
  Top

40 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-12 15:56:13 得分 0

呵呵,UPTop

相关问题

  • 高分求解jsp读取xml乱码问题!急!!!
  • linex 下读取xml文件乱码?
  • 读取XML文件后,乱码问题?
  • 怎么用JSP读取XML?
  • jsp从mysql中读取中文数据乱码
  • TXMLDocument控件读取XML文件中的乱码的问题
  • flash读取中文编码方式xml乱码问题。。。
  • 用IXMLDocument 读取XML文件,结果出现乱码,求救!
  • 『求救』JSTL读取xml文件中的中文显示乱码
  • 为何JSP从SQL SERVER2000读取中文数据是乱码,如何解决?

关键词

得分解答快速导航

  • 帖主:steveyue
  • jFresH_MaN
  • jianghuxing

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo