JDOM输出的结果是数据库中的中文在xml文档中显示为乱码,请教高手,怎么解决这个问题!

03-11-20 mikecaolei
代码如下:

********************************************************

String sql;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();

tring url="jdbc:odbc:sbcfinance"; // 载入jdbc odbc的驱动程序

String user="sa";

String password="";

Connection conn= DriverManager.getConnectionurl,user,password); 连接数据库

Statement stmt=conn.createStatementResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); //创建一个statement

sql="select * from tbl_department"; //定义查询的SQL语句

ResultSet rs=stmt.executeQuery(sql);

Document document=new Document(new Element("部门列表"));//创建文档

ResultSetMetaData rsmd = rs.getMetaData(); //获取字段名

int numberOfColumns = rsmd.getColumnCount(); //获取字段数

int i=0;

while(rs.next()){ //将查询结果取出

Element element0=new Element("部门"); //创建元素 生成JDOM树

document.getRootElement().addContent(element0);

for (i=1; i<=numberOfColumns;i++)

{

String date=new String(rs.getString(i).getBytes("ISO-8859-1"),"GB2312"); //代码转换

Element element=new Element(rsmd.getColumnName(i)).setText(date);

element0.addContent(element);

}

}

rs.close(); //关闭结果集

stmt.close(); //关闭statement

conn.close(); //关闭连接

XMLOutputter outp = new XMLOutputter();

outp.output(document, new FileOutputStream("d:\\data.xml")); //输出XML文档

**********************************************************

输出的结果是数据库中的中文在xml文档中显示为乱码,请教高手,怎么解决这个问题!

汪汪
2003-11-20 14:37
输出时指明参数即可,如下:

XMLOutputter outtp = new

XMLOutputter("", true,"GB2312");

mikecaolei
2003-11-20 16:09
试过了,结果还是原来的,内容无法显示中文!

显示如下:

<?xml version="1.0" encoding="GB2312"?>

<部门列表>

<部门>

<id>1</id>

<name>???</name>

<dispOrder>0</dispOrder>

<del>0</del>

</部门>

<部门>

<id>2</id>

<name>???</name>

<dispOrder>1</dispOrder>

<del>0</del>

</部门>

<部门>

<id>3</id>

<name>???</name>

<dispOrder>2</dispOrder>

<del>0</del>

</部门>

<部门>

<id>4</id>

<name>???</name>

<dispOrder>3</dispOrder>

<del>0</del>

</部门>

<部门>

<id>5</id>

<name>???</name>

<dispOrder>4</dispOrder>

<del>0</del>

</部门>

<部门>

<id>6</id>

<name>dd</name>

<dispOrder>5</dispOrder>

<del>1</del>

</部门>

<部门>

<id>7</id>

<name>test</name>

<dispOrder>6</dispOrder>

<del>0</del>

</部门>

</部门列表>

mikecaolei
2003-11-20 16:27
解决了!

只要将

String date=new String(rs.getString(i).getBytes("ISO-8859-1"),"GB2312"); //代码转换

改成

String date=new String(rs.getString(i).getBytes("GB2312"),"GB2312"); //代码转换

就行了!

猜你喜欢