首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >StAX - writeCharacters(),如何不转义汉字、日语字符?

StAX - writeCharacters(),如何不转义汉字、日语字符?
EN

Stack Overflow用户
提问于 2010-12-07 07:27:57
回答 1查看 1.3K关注 0票数 0

XMLStreamWriter#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“。汉字、日文也是转义的,就像

汉语,英语,にほんご“--->”汉语,英语,にほんご

有什么要解决的吗?

代码语言:javascript
运行
复制
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>&#x6c49;&#x8bed;, English, &#x306b;&#x307b;&#x3093;&#x3054;</a>  

    writer.writeStartDocument();  
    writer.setDefaultNamespace("http://c");  
    writer.writeStartElement("http://c", "a");  

    writer.writeCharacters(s);  
    writer.writeEndElement();  
    writer.flush();  
}  
EN

回答 1

Stack Overflow用户

发布于 2010-12-07 07:36:42

当您创建作者时,用户XMLOutputFactory.createXMLEventWriter(stream, "UTF-8")。我相信这能解决你的问题。

我没有使用这个特定的API,但是我使用了很多其他的API。例如,如果编码不支持字符,则由Properties.store()方法自动进行转义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4374260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档