关于bufferedOutputStream的问题
import java.io.*;
public class IO
{
public static void main(String[] args) throws
IOException {
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("C:\\Users\\yafee\\Desktop\\temp.txt"));
byte[] data="Hello,我是乔布斯".getBytes();
for (int i = 0; i < data.length; i++) {
System.out.print(data[i]);
}
out.write(data);
out.close();
}
}
控制台的结果为:
72101108108111-93-84-50-46-54-57-57-57-78-68-53-71
我有一点搞不懂:
我本来是把“Hello,我是乔布斯”这个字符串转化为字节数组,存在temp.txt这个文件中,所以temp.txt文件里存的应该是“72101108108111-93-84-50-46-54-57-57-57-78-68-53-71”(因为我通过for循环在控制台打印出来的就是“72101108108111-93-84-50-46-54-57-57-57-78-68-53-71”),但是为什么现在temp.txt文件里的内容是“Hello,我是乔布斯”呢???
------解决方案--------------------
你用记事本打开的文件,看到的内容被“记事本”这个编辑软件根据编码格式解释后的了
记事本有具有这个智能功能,可以识别utf-8,ansi....等等格式的文件
那些中文符号,在内存中由多个字节组合而成
你打开的是gbk编码格式的文件,此时,2个字节足以表示一个中文字符