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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

    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时出现的信息,哪出错了?
      

  5.   

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

  6.   

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

  7.   

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

  8.   

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

  9.   

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

  10.   

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

  11.   

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

  12.   

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

    <fmt:setLocale value="GB2312"/>
    也都没有用
      

  13.   

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

  14.   

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

  15.   

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

  16.   

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

  17.   

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

    <fmt:setLocale value="GB2312"/>
    仍然没有用。
      

  18.   

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

  19.   

    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?
      

  20.   

    你的意思是说不管有没有
    <fmt:requestEncoding value="GB2312"/>

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

  21.   

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

  22.   

    是的,在页面用
    <%@ 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这类的东西
    根本不显示中文
      

  23.   

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

  24.   

    回 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"%>
    问题依然
      

  25.   

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

  26.   

    <?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改完试试。
      

  27.   

    回 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,再重新给它编绎,打包!
      

  28.   

    <%@ 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>楼主试试。
      

  29.   

    <%@ 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>
      

  30.   

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

  31.   

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