关于字符编码的问题实在想不通了,没分了,对不住各位

terranhao 2007-02-28 03:14:52
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联系不上啊,请问各位这到底是怎么一回事情
...全文
222 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
低调的小青蛙 2007-03-02
  • 打赏
  • 举报
回复
既然没有分了,搂主自己就要多主动一点了,

推荐一篇文章:
http://www.regexlab.com/zh/encoding.htm
sswhsz 2007-02-28
  • 打赏
  • 举报
回复
c.getBytes()==》这儿因为你没有指定字符集,所以用缺省的字符集(GBK)编码,
'浩'字的GBK编码是-70,-58

da.writeChar(c.charAt(0))==》这儿写的是字符的unicode编码,'浩'的unicode编码是6d69

你用记事本打开的时候,记事本会猜测文件的编码,这儿,记事本以为a.txt文件的编码是GBK
所以,把6d69当作两个GBK字符来读,
6d ==》m
69 ==》i
handong890 2007-02-28
  • 打赏
  • 举报
回复
FileWriter out=new FileWriter("a.txt");
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

62,614

社区成员

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

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