FileOutputStream fo=new FileOutputStream("c:\\a.txt");
DataOutputStream da=new DataOutputStream(fo);
String c="浩";
byte[] b=c.getBytes();
da.writeChar(c.charAt(0));
System.out.println(b[0]);
System.out.println(b[1]);
da.close();
这个程序把"浩"字写进a.txt,然后我用记事本打开a.txt,发现是mi
System.out.println得到的结果是-70和-58
-70和-58怎么也和mi联系不上啊,请问各位这到底是怎么一回事情
DataOutputStream da=new DataOutputStream(fo);
String c="浩";
byte[] b=c.getBytes();
da.writeChar(c.charAt(0));
System.out.println(b[0]);
System.out.println(b[1]);
da.close();
这个程序把"浩"字写进a.txt,然后我用记事本打开a.txt,发现是mi
System.out.println得到的结果是-70和-58
-70和-58怎么也和mi联系不上啊,请问各位这到底是怎么一回事情
out.write("洁");
out.flush(); //刷新缓冲区 是个好习惯
out.close(); //好习惯 写进去FileReader in=new FileReader("a.txt"); //读出来
char[]buf=new char[1024]; //注意不在是byte数组而是char树组
int len=in.read(buf);
System.out.println(new String(buf,0,len));
in.close();有FileWriter 和 FileRader不用干吗用 FileOutputStream
'浩'字的GBK编码是-70,-58da.writeChar(c.charAt(0))==》这儿写的是字符的unicode编码,'浩'的unicode编码是6d69你用记事本打开的时候,记事本会猜测文件的编码,这儿,记事本以为a.txt文件的编码是GBK
所以,把6d69当作两个GBK字符来读,
6d ==》m
69 ==》i
http://www.regexlab.com/zh/encoding.htm