dom4j读取linux下的xml文件时,如果文件中有中文,就出现乱码,在win环境下正常,
用java读取mysql数据库中的数据都正常,没有乱码问题,
环境是rh9+tomcat+mysql
通过以下办法没有解决,请兄弟们帮忙:
1. 先在web.xml中加filter
Set Character Encoding
com.filter.SetCharacterEncodingFilter
encoding
GB2312
2.只要是jsp页面都做处理:
3.因为dom4j在写xml(format.setEncoding("GBK")中不支持GB2312所以所有写出的xml都是:
用以上方法将文件放到linux下,浏览时中文全变成?????
dom4j读写xml的文件是:
package com.menu;
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import com.config.xml_path;
import org.apache.log4j.Logger;
public class XMLMenu
{
Logger log =Logger.getLogger(this.getClass());
public XMLMenu()
{
}
public String getXMLMenu() throws Exception
{
StringBuffer message = new StringBuffer();
try{
xml_path xmlpath=new xml_path();
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File("/home/web/test/xml/menu/menu.xml"));//菜单路径
List list = document.selectNodes("/菜单/栏目/@name" );
List list_nodes=document.selectNodes("/菜单/栏目");
Iterator iter = list.iterator();
Iterator iter2 = list_nodes.iterator();
while(iter.hasNext()){
Attribute attribute=(Attribute)iter.next();
message.append(attribute.getValue()+":");
Element menuElement = (Element)iter2.next();
Iterator iterator = menuElement.elementIterator("名称");
Iterator iterator2 = menuElement.elementIterator("链接地址");
while(iterator.hasNext()){
Element titleElement=(Element)iterator.next();
Element hrefElement=(Element)iterator2.next();
message.append(hrefElement.getText()+"="+titleElement.getText()+",");
}
message.append("|");
}
} catch(Exception ex){
ex.printStackTrace();
log.debug("xml读取不成功");
}
return message.toString();
}
}
要读取的xml文件是这样的:
网站信息配置名称>
Admin_SiteConfig.jsp链接地址>
main链接目标>
12权限>
系统博客分类管理名称>
admin_usertype.jsp链接地址>
main链接目标>
12权限>
日志敏感字过滤管理名称>
Admin_filtrate.jsp链接地址>
main链接目标>
12权限>
管理屏蔽IP名称>
Admin_iplock.jsp链接地址>
main链接目标>
12权限>
友情链接管理名称>
admin_friendsite.jsp链接地址>
main链接目标>
12权限>
修改注册条款名称>
Admin_regtext.jsp链接地址>
main链接目标>
12权限>
栏目>
写新日志名称>
user_addblog.jsp链接地址>
main链接目标>
12权限>
日志管理名称>
user_blog.jsp链接地址>
main链接目标>
12权限>
日志评论管理名称>
user_comment.jsp链接地址>
main链接目标>
12权限>
修改公告名称>
user_placard.jsp链接地址>
main链接目标>
12权限>
栏目>
注册用户管理名称>
admin_user.jsp链接地址>
main链接目标>
12权限>
用户改名名称>
newhouse.jsp链接地址>
main链接目标>
12权限>
添加管理员名称>
admin_admin.asp链接地址>
main链接目标>
12权限>
栏目>
菜单>
答案一:
读取xml文件是使用系统的本地编码, win默认的就是中文当然不会乱码了, 你看看linux下默认的字符编码是什么, 如果是iso8859的话, 你只有在读取xml文件内容后进行转换了, 如果是utf-8(rh9一般默认就是它), 就需要将xml文件内容以utf-8的方式存储(用记事打开后,另存为时,选择要存储的字符编码)
答案二:
用UTF-8,页面也setEncoding..,如果还不行,你看看linux的字库是不是不全,我估计是前面就可以解决了