关于BOM的问题 如何用java程序创建一个带有BOM标志的txt文件。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 什么BOM啊?难道是Bill of Materials 难道兄弟也是搞MES,Shop flow control的? Byte-order Mark给楼主的参考:http://codesnipers.com/?q=node/68 答:这很方便啊。代码如下:OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(new File("c:\\t.txt")), "UTF-16LE"); fos.write(0xFEFF); //BOM fos.write("你好"); fos.flush(); fos.close(); 我想用UTF-8的格式fos.write(0xFEFF); //BOM 应该用什么? 答:0xEF 0xBB 0xBF for UTF-8 OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(f), enc); fos.write(0xEF); //BOMfos.write(0xBB); //BOMfos.write(0xBF); //BOMfos.write("abcd"); fos.flush(); fos.close();还是OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(f), enc); fos.write(0xEFBBBF); //BOMfos.write("abcd"); fos.flush(); fos.close();public class FileUtil {public static void main(String[] args) throws IOException { String enc = "UTF-8"; File f = new File("E:\\t.txt"); writeStringToFile(f, "abcd", enc); readFile(f);}public static void writeStringToFile(File f, String content, String enc) throws IOException { OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(f), enc); fos.write(0xEFBBBF); //BOM fos.write("abcd"); fos.flush(); fos.close();}public static void readFile(File f) throws IOException{ InputStream ios=new FileInputStream(f); byte[] b=new byte[1024]; ios.read(b); ios.close(); if(b[0] == -17&&b[1] == -69&&b[2] ==-65){ System.out.println(f.getName()+":UTF-8"); }else{ System.out.println(f.getName()+":其它"); }}}上面是我的程序 为什么输出结果是:其它而且在txt文档里abcd之前有个黑色方块 求大虾指点```` 答:是:fos.write(0xEF); //BOM fos.write(0xBB); //BOM fos.write(0xBF); //BOM fos.write( "abcd "); 另外:你看一下:http://www.w3.org/International/questions/qa-utf8-bom可回答你的BOM在编辑器中的显示问题。 fos.write(0xEF); //BOM fos.write(0xBB); //BOM fos.write(0xBF); //BOM fos.write( "abcd "); 好像是不对的 生成的文件右键属性显示大小是10字节 结果应该是占7字节阿(BOM占的3个字节加上abcd的4字节)而且程序的运行结果是:其它 并不是:UTF-8 答:楼主试试这个:OutputStream fos = new FileOutputStream("d:/t.txt"); fos.write((byte)0xEF); //BOM fos.write((byte)0xBB); //BOMfos.write((byte)0xBF); //BOMfos.write( "abcd".getBytes("UTF-8")); fos.flush(); fos.close(); 晕了 fos.write( "abcd".getBytes("UTF-8")); 这么写会出错的 不行哦 答:怎么可能呢?我10楼给的代码运行是成功的啊。你要注意,直接使用的是字节流FileOutputStream。 恩10楼那个是对的 把FileOutputStream 看错了 结帖 分给你了,谢谢了~! Extjs菜鸟求帮助 java操作只读文件 刚刚写的一个小程序,大家帮小妹看一下哪出错了!!万分感激啊!! 一个查询问题 怎么在JSP上运行后台程序? sql语句中使用java变量问题,高人指路啊!! EL表达式中文问题? 如何做一个转动的圆? 谁能给我写一个linux下的java调用C代码的例子?我执行老是出问题? 继承问题 将记录对象写入objectoutputstream中,为什么文件中却没有?各位大侠帮忙诊断 java 打印的时候怎样设置页边距??????
难道是Bill of Materials
难道兄弟也是搞MES,Shop flow control的?
http://codesnipers.com/?q=node/68
new FileOutputStream(new File("c:\\t.txt")), "UTF-16LE");
fos.write(0xFEFF); //BOM
fos.write("你好");
fos.flush();
fos.close();
fos.write(0xFEFF); //BOM
应该用什么?
0xEF 0xBB 0xBF for UTF-8
fos.write(0xEF); //BOM
fos.write(0xBB); //BOM
fos.write(0xBF); //BOM
fos.write("abcd");
fos.flush();
fos.close();
还是
OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(f), enc);
fos.write(0xEFBBBF); //BOM
fos.write("abcd");
fos.flush();
fos.close();public class FileUtil {
public static void main(String[] args) throws IOException {
String enc = "UTF-8";
File f = new File("E:\\t.txt");
writeStringToFile(f, "abcd", enc);
readFile(f);
}
public static void writeStringToFile(File f, String content, String enc) throws IOException {
OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(f), enc);
fos.write(0xEFBBBF); //BOM
fos.write("abcd");
fos.flush();
fos.close();
}
public static void readFile(File f) throws IOException{
InputStream ios=new FileInputStream(f);
byte[] b=new byte[1024];
ios.read(b);
ios.close();
if(b[0] == -17&&b[1] == -69&&b[2] ==-65){
System.out.println(f.getName()+":UTF-8");
}else{
System.out.println(f.getName()+":其它");
}
}
}上面是我的程序 为什么输出结果是:其它
而且在txt文档里abcd之前有个黑色方块 求大虾指点````
fos.write(0xEF); //BOM
fos.write(0xBB); //BOM
fos.write(0xBF); //BOM
fos.write( "abcd "); 另外:你看一下:http://www.w3.org/International/questions/qa-utf8-bom
可回答你的BOM在编辑器中的显示问题。
fos.write(0xBB); //BOM
fos.write(0xBF); //BOM
fos.write( "abcd ");
好像是不对的 生成的文件右键属性显示大小是10字节
结果应该是占7字节阿(BOM占的3个字节加上abcd的4字节)
而且程序的运行结果是:其它 并不是:UTF-8
OutputStream fos = new FileOutputStream("d:/t.txt");
fos.write((byte)0xEF); //BOM
fos.write((byte)0xBB); //BOM
fos.write((byte)0xBF); //BOM
fos.write( "abcd".getBytes("UTF-8"));
fos.flush();
fos.close();
恩10楼那个是对的 把FileOutputStream 看错了 结帖 分给你了,谢谢了~!