こんにちは、私は単純なコードがあります。のXml変換エンコードの問題
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()
UTF-16エンコーディングにXMLをtrasnform必要があります。私が知る限り、jvmのStringの内部表現はすでにUTF-16文字を使用していますが、結果の文字列にはエンコーディングが "UTF-16"に設定されているヘッダーが含まれている必要があります。しかし、私が手:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
は(また、スタンドアロンのプロパティが間違っているようだ) トランスインスタンスは次のとおりです。com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl (私はと思われるもの既定値) ここで私が恋しいのは?
結局問題を解決できましたか?私は今、1つのアプリでも問題にぶつかりました。本当にうそつき。私はソースを確認しました。 'encoding'の値は単に渡されません(http://www.grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/com/sun/org/apache/)。 xalan/internal/xsltc/trax/TransformerImpl.java#TransformerImpl.transform%28javax.xml.transform.Source%2Ccom.sun.org.apache.xml.internal.serializer.SerializationHandler%2Cjava.lang.String%29)をトランスレット。 –