如何用java程序创建一个带有BOM标志的txt文件。
解决方案 »
- java种类中生成本类对象的问题
- 第一次发帖子:大家帮忙看看 ,菜鸟问题,JAVA输入流显示问题
- 询Eclipse 使用jadclipse反编译插件的问题
- 问y 关于java import的问题(在线等)
- 急!请问怎样使用msns包获得msn中好友的列表?
- 关于使用ScrollPane类创建树形菜单的问题
- 各位老师帮忙啊,我在mysql query browser工具中,直接在resultset 1结果中编辑输入汉字,我怎么设计表的字符集及在JSP中怎么取才能正确
- 金蝶面试
- 初学java,问一个问题, 求大神指教
- 谁能解决在安装vaj4.0中文版的时候,总是提示下载的不正确的语言包这个问题?
- 将记录对象写入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 看错了 结帖 分给你了,谢谢了~!