我刚才测了一下,
cn = readin.substring(readin.indexOf("_") + 5,readin.lastIndexOf("_") - 4);
得到的字符串编码是中文的,Text cnName_value = doc.createTextNode(cn.trim());这句以后
建立xml节点后变成乱码。怎么解决?????

解决方案 »

  1.   

    将xml的设置成如下
    <?xml version="1.0" encoding="gb2312"?>
      

  2.   

    没有用,我早就试过了,处理过的文档又都改成<?xml version="1.0" encoding="UTF-8"?>,中文还是乱码。
      

  3.   

    // BasicDom.java
    import java.io.*;
    import javax.xml.parsers.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*; 
    import org.w3c.dom.*;
    import org.xml.sax.*;public class BasicDom {
    public static void main(String[] args) 
    {
    Document doc = parseXmlFile("infilename.xml", false);
    // Add a CDATA section to the root element
    Element element = doc.getDocumentElement();
    Text text = doc.createTextNode("我是谁\n");
    element.appendChild(text);
    System.out.println(element);

    // Special characters are automatically converted to entities by the XML writers
    text = doc.createTextNode("<>&\"'");
    element.appendChild(text);

    // Save the document to the disk file
    try
    {
    TransformerFactory tranFactory = TransformerFactory.newInstance();
    Transformer aTransformer = tranFactory.newTransformer();
    aTransformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
    Source src = new DOMSource(doc);
    Result dest = new StreamResult(new File("out.xml"));
    aTransformer.transform(src, dest);
    }
    catch (TransformerConfigurationException e)
    {
    e.printStackTrace();
    }
    catch (TransformerException e)
    {
    e.printStackTrace();
    }
    } // Parses an XML file and returns a DOM document.
    // If validating is true, the contents is validated against the DTD
    // specified in the file.
    public static Document parseXmlFile(String filename, boolean validating)
    {
    try {
    // Create a builder factory
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setValidating(validating); // Create the builder and parse the file
    Document doc = factory.newDocumentBuilder().parse(new File(filename));
    return doc;
    } catch (SAXException e) {
    // A parsing error occurred; the xml input is not valid
    } catch (ParserConfigurationException e) {
    } catch (IOException e) {
    }
    return null;
    }
    }设置了aTransformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
    输入和输出的xml文件infilename.xml
    ==============
    <?xml version="1.0" encoding="UTF-8"?>
    <map>
        <entry key="key1" value="value1" />
        <entry key="key2" />
    </map>out.xml
    =======
    <?xml version="1.0" encoding="GB2312"?>
    <map>
        <entry key="key1" value="value1"/>
        <entry key="key2"/>
    我是谁
    &lt;&gt;&amp;"'</map>