使用dom4j在xml文件中保存中文的一个更稳妥的方案

使用dom4j在xml文件中保存中文的一个更稳妥的方案
以前,我们习惯用以下方式在XML中保存中文:
         try  {
            OutputFormat format 
= OutputFormat.createPrettyPrint();
            format.setEncoding(
"GBK");    // 指定XML编码        
            XMLWriter writer = new XMLWriter(new FileWriter("c:\\1.xml"
),format);
            
            Document document 
=  DocumentHelper.createDocument();
            Element root 
=  document.addElement( " users " );

            
for (String user:userMap.keySet()){
                Element userElm
= root.addElement( " user " );
                userElm.addElement(
" name " ).addText(user);
                userElm.addElement(
" pswd " ).addText(userMap.get(user));
            }
           
            writer.write(document);
            writer.close();
        } 
catch  (Exception e) {
            System.out.println(
" 无法将注册用户信息存储到文件中,原因为 " + e.getMessage());
            e.printStackTrace();
        }

在中文操作系统下,这样的方案是可行的,但是在英文操作系统下中文就会变成问号。最好使用如下的修正方案:
         try  {
            OutputStreamWriter osw 
= new OutputStreamWriter(new FileOutputStream("c:\\1.xml"),"UTF-8");   
            OutputFormat format 
= OutputFormat.createPrettyPrint();
            format.setEncoding(
"UTF-8");    // 指定XML编码       
            XMLWriter writer = new
 XMLWriter(osw,format);
            
            Document document 
=  DocumentHelper.createDocument();
            Element root 
=  document.addElement( " users " );

            
for (String user:userMap.keySet()){
                Element userElm
= root.addElement( " user " );
                userElm.addElement(
" name " ).addText(user);
                userElm.addElement(
" pswd " ).addText(userMap.get(user));
            }
           
            writer.write(document);
            writer.close();
        } 
catch  (Exception e) {
            System.out.println(
" 无法将注册用户信息存储到文件中,原因为 " + e.getMessage());
            e.printStackTrace();
        }

两端代码的变化区域在粗体部分,请注意区分。

你可能感兴趣的:(使用dom4j在xml文件中保存中文的一个更稳妥的方案)