A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王红霞 中级黑马   /  2012-7-21 16:19  /  1123 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. class  EncodeStream
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 writeText();
  7.                 readText();
  8.         }
  9.         public static void readText() throws IOException
  10.         {
  11.                 InputStreamReader isr=new InputStreamReader(new FileInputStream("d:\\123\\utf.txt"),"UTF-8");
  12.                 char[] buf=new char[1024];
  13.                 int len=isr.read(buf);
  14.                 String str=new String(buf,0,len);
  15.                 System.out.println(str);
  16.                 isr.close();
  17.         }
  18.         public static void writeText() throws IOException
  19.         {
  20.                 OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("d:\\123\\utf.txt"),"GBK");
  21.                 osw.write("你好");
  22.                 osw.close();
  23.         }
  24. }
复制代码
================================================================================================
  1. import java.io.*;
  2. class  EncodeStream
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 writeText();
  7.                 readText();
  8.         }
  9.         public static void readText() throws IOException
  10.         {
  11.                 InputStreamReader isr=new InputStreamReader(new FileInputStream("d:\\123\\utf.txt"),"GBK");
  12.                 char[] buf=new char[1024];
  13.                 int len=isr.read(buf);
  14.                 String str=new String(buf,0,len);
  15.                 System.out.println(str);
  16.                 isr.close();
  17.         }
  18.         public static void writeText() throws IOException
  19.         {
  20.                 OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("d:\\123\\utf.txt"),"UTF-8");
  21.                 osw.write("你好");
  22.                 osw.close();
  23.         }
  24. }
复制代码
UTF-8是三个字节,GBK是两个字节,为什么第一个程序打印出问号?没有可能是前三个字节恰好读成了一个汉字 后面一个字节是问号吗?

1.jpg (38.64 KB, 下载次数: 8)

1.jpg

2.jpg (12.77 KB, 下载次数: 10)

结果

结果

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马