java - xml转换编码问题

标签 java xml transformation

嗨,我有一个简单的代码:

    InputSource is = new InputSource(new StringReader(xml))
    Document d = documentBuilder.parse(is)
    StringWriter result = new StringWriter()
    DOMSource ds = new DOMSource(d)
    Transformer t = TransformerFactory.newInstance().newTransformer()
    t.setOutputProperty(OutputKeys.INDENT, "yes");
    t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
    t.setOutputProperty(OutputKeys.STANDALONE, "yes");
    t.setOutputProperty(OutputKeys.ENCODING,"UTF-16")
    t.transform(ds,new StreamResult(result))
    return result.toString()

应该将 xml 转换为 UTF-16 编码。虽然据我所知,jvm 中 String 的内部表示已经使用 UTF-16 字符,但我的期望是结果 String 应该包含一个 header ,其中编码设置为“UTF-16”,originla xml 为 UTF-8但我得到:

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>

(独立属性似乎也是错误的) 变压器实例是:com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl (我认为这是默认的) 那么我在这里想念什么?

最佳答案

使用明确声明 UTF-16 作为输出编码的编写器。尝试 OutputStreamWriter(OutputStream out, String charsetName) ,它应该包装一个 ByteArrayOutputStream 并看看这是否有效。

关于java - xml转换编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6995733/

相关文章:

java - 在 javax.xml.transform.Transformer 中处理原始文本

xml - 仅在根节点添加前缀 NS0

java - Java 中的 2D 变换(平移、旋转、缩放)程序

java - jackson JSON : Serialize certain properties under different view?

java - Java 类中的多对多关系,无需使用任何 ORM

java - 使 PDF 文件上的问号可读

java - JUnit 4 : Test case returns an object used in other tests in the test suite

java - 如何从 XML 绑定(bind)中排除属性

c# - 将 XML 元素与 ListBox 所选项目匹配 - C#

c++ - glm lookAt 和矩阵变换产生奇怪的行为