Jdom 在更改xml以后,输出的utf8文件为什么没有bom头?

yingShisscWang 2009-11-25 03:19:41
我用jdom修改一个xml文件后生成一个目标文件。输出格式utf8.
utf8文件应该有三个字符组成的bom头,为什么我现在生成的文件没有。
但是文件格式确实是utf8
我要怎么设置参数才能让这个bom头出现。


public class Test {
public static void main(String[] args) {
try {
File fi = new File("c:\\test.xml");
SAXBuilder sb = new SAXBuilder(false);
Document doc = sb.build(fi);
Test test = new Test();
test.doElement(doc.getRootElement());
XMLOutputter xmlOut = new XMLOutputter();
Format format;
format = Format.getPrettyFormat();
format.setEncoding("UTF-8");
format.setOmitDeclaration(!true);
format.setLineSeparator("\n");
xmlOut.setFormat(format);

FileOutputStream fos = new FileOutputStream("c:\\test2.xml");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos, "UTF8"));


xmlOut.output(doc, bw);
bw.flush();
bw.close();
} catch (Exception e) {

}

}

protected void doElement(Element element) {

String temp = element.getName();
System.out.println(temp);

Iterator attributes = (element.getAttributes()).iterator();
while (attributes.hasNext()) {
Attribute attribute = ((Attribute) (attributes.next()));
attribute.setValue("aaaa");

}

}

}

...全文
240 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
isuifengi 2010-01-12
  • 打赏
  • 举报
回复
手动在文件输出之前加上 bom, 就可以了
fw.write("\uFEFF".getBytes("utf-8"));
yingShisscWang 2009-11-30
  • 打赏
  • 举报
回复
结贴了。
zl3450341 2009-11-26
  • 打赏
  • 举报
回复
yingShisscWang 2009-11-26
  • 打赏
  • 举报
回复
怎么没人回的啦
yingShisscWang 2009-11-25
  • 打赏
  • 举报
回复
我用ultraedit看的(换成16进制),如果有bom可以看到 EF BB BF
现在没有看到
hbgzg3006 2009-11-25
  • 打赏
  • 举报
回复
bom头是两个字节吧。这个估计显示不出来。你可以把它的byte数组前两个字节打印出来看一下。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧