如果从数据库中读取出来的中文字符不是乱码,那么应该是环境变量的问题。不知道你用什么方法生成的XML文件呢?

解决方案 »

  1.   

    import java.sql.*;
    import java.io.*;
    public class DatabaseRetriever
    {
    public static void main(String[] args) 
    {
    if(args.length<1)
    {
       System.out.println("usage:java DatabaseRetriever <outputFileName>");
       System.exit(0);
    }
    System.out.println("args is:"+args[0]);
    DatabaseRetriever r=new DatabaseRetriever();
    r.start(args[0]);
    }
    public void start(String outFile)
    {
    DataOutputStream dos=createXmlFile(outFile);
    Connection conn=getConnection();
    try{
    Statement stmt=conn.createStatement();
    String query="select first_name,last_name,email from dujuan";
    System.out.println("query is:"+query);
    ResultSet rset=stmt.executeQuery(query);
    String firstName,lastName,email;
    while(rset.next())
    {
      firstName=rset.getString(1);
      lastName=rset.getString(2);
      email=rset.getString(3);
      
      writeDataRecord(firstName,lastName,email,dos);
              System.out.println("ddddddd");
            }
       }catch(Exception ex){
       ex.printStackTrace();
       System.out.println("Start程序异常!!!");
       }
       closeXmlFile(dos);
    }public  DataOutputStream createXmlFile(String outputFileName)
    {
        //PrintStream pos=null;
        DataOutputStream dos=null;
       try{  
       dos=new DataOutputStream(new FileOutputStream(outputFileName));
         dos.writeBytes("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"? >");
     dos.writeBytes("<Document>");
       }catch(Exception ex){
       ex.printStackTrace();
       System.out.println("createXmlFile异常!!!");}
       return dos;
    }public void writeDataRecord(String f,String l,String e, DataOutputStream dos)
    {       
      try{
          dos.writeBytes("<Person>");
         dos.writeBytes("<FirstName>"+f+"</FirstName>");
         dos.writeBytes("<LastName>"+l+"</LastName>");
         dos.writeBytes("<Email>"+e+"</Email>");
          dos.writeBytes("</Person>");
         }catch(Exception ex){System.out.println("writeDataRecord异常!!!");}
    }public void closeXmlFile(DataOutputStream dos)
    {
      try{
          dos.writeBytes("</Document>");
      dos.close();
         }catch(Exception ex){System.out.println("closeXmlFile异常!!!");}
    }
    public Connection getConnection()
    {
    Connection conn=null;
    try
       { 
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         conn = DriverManager.getConnection("jdbc:odbc:dj","","");
         System.out.println("与数据库连接成功!!!");
       }
    catch(Exception e){System.out.println("与数据库连接失败!!!");}
    return conn;
    }
    }
      

  2.   

    xml文件的编码方式你设置了吗
    <?xml version="1.0" encoding="GB2312" ?>
      

  3.   

    楼上正解,应该问题在 encoding 这里
      

  4.   

    可以试试从数据库中取得内容进行转码,就是调用String的getBytes函数。
    public void writeDataRecord(String f,String l,String e, DataOutputStream dos)
    {      
      try{
          dos.writeBytes("<Person>");
         dos.writeBytes("<FirstName>"+String.getBytes(f,"GB2312")+"</FirstName>");
         dos.writeBytes("<LastName>"+String.getBytes(l,"GB231")+"</LastName>");
         dos.writeBytes("<Email>"+e+"</Email>");
          dos.writeBytes("</Person>");
         }catch(Exception ex){System.out.println("writeDataRecord异常!!!");}
    }然后在ie中查看是选择字符集
      

  5.   

    加上这几段试试:
     response.setContentType("text/html;charset=gb2312");
            request.setCharacterEncoding("gb2312");
    PrintWriter out=response.getWriter();
      

  6.   

    偶觉的应该从两个方面去查原因,一个是XML的编码方式是不是正确,第二个就是你从数据库里查出的数据是不是已经就是乱码呢?我看了一下你写的代码,好象XML编码方式应该是如xiaoxhui(飞)说的那样“encoding="GB2312"”而不应该是encoding=\"ISO-8859-1\"吧?
      

  7.   

    如果再不行的话就encoding="GBK"吧,搞定了吗,结贴啊.