てXMLStreamWriterの#のwriteCharacters(...)StAX - writeCharacters()、中国語、日本語文字をエスケープする方法は?
writeCharacters(...)メソッドは、次のような&、<、>、および」文字をエスケープするために使用される。
(http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/StAX4.htmlから)が、ときに私いくつかの中国語、日本語の文字を出力し、出力XML ファイルは "UTF-8"でエンコードされていませんが、 "GBK"または "Shift-JIS"で表されます。
"汉语、英語、にほんご" ---> "&#x6c49; &#x8bed; English、&#x306b; &#x307b; &#x3093; &#1 x3054;」
は、それを解決するために、とにかくあり
public static void main(String[] args) throws Exception {
// GBK
System.out.println("JVM default charset = " + Charset.defaultCharset());
String s = "汉语, English, にほんご";
XMLOutputFactory output = XMLOutputFactory.newInstance();
output.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, false);
OutputStream out = new FileOutputStream("C:/aa.txt");
XMLStreamWriter writer = output.createXMLStreamWriter(out, "UTF-8");
// When output encoding is "UTF-8", result is something like:
// <?xml version='1.0' encoding='UTF-8'?><a>汉语, English, にほんご</a>
// When output encoding is "GBK", result is something like:
// <?xml version='1.0' encoding='GBK'?><a>汉语, English, にほんご</a>
writer.writeStartDocument();
writer.setDefaultNamespace("http://c");
writer.writeStartElement("http://c", "a");
writer.writeCharacters(s);
writer.writeEndElement();
writer.flush();
}
申し訳ありません、上記のコメントは正しくありません!私はまずstatckoverflow.comを使用しています。私はJavaソースを追加します。 – btpka3
あなたの例は、私が言ったことを正確に確認します。 UTF-8を使用していて、他の文字セットを使用しているときにエンコードされている場合は、すべてのUnicode文字がうまく印刷されます。だから何が問題なの? – AlexR
「UTF-8」を使用すると~~~~しかし、一般に、XMLが "GBK"でエンコードされていると、なぜ中国語の文字がエスケープされますか?お客様が「GBK」の使用を主張している場合は、技術的に修正できますか? – btpka3