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

© 心在左边跳 中级黑马   /  2015-7-9 14:07  /  531 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字符流的出现为了方便操作字符
通过子类转换流完成

  • InputStreamReader
  • OutputStreamWriter
    在构造2个对象时加入字符集

常见编码表

  • ASCII:美国标准信息交换码。用一个字节7位表示。
  • ISO8859-1:拉丁码表。欧洲码表。用一个字节8位表示。
  • GB2312:中文编码
  • GBK:中文编码升级,融合更多的中文文字符号
  • Unicode:国际标准码。所有文字都用两个字节表示,JAVA语言使用的是unicode
  • UTF-8:最多用三个字节表示一个字符。
  1. import java.io.*;
  2. public class EncodeStream {
  3.     public static void main(String[] args) throws IOException {
  4.         //获取字符,用对应的编码表编码后存储到硬盘中,字符---字节,编码
  5.         OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("gbk.txt"),"UTF-8");
  6.         osw.write("您好");
  7.         osw.close();
  8.         //获取硬盘上的编码数字,用编码表找到对应的字符,并打印,字节-字符,解码
  9.         InputStreamReader isr=new InputStreamReader(new FileInputStream("gbk.txt"),"UTF-8");
  10.         char[]buf=new char[1024];
  11.         int len=0;
  12.         while((len=isr.read(buf))!=-1){
  13.             System.out.println(new String(buf,0,len));
  14.         }
  15.         isr.close();
  16.     }
  17. }
复制代码

编码:字符串变成字节数组
解码:字节数组变成字符串
String->byte:str.getBytes(charsetName)
byte[]-String:new String(byte[],charsetName)

  1. import java.io.UnsupportedEncodingException;
  2. import java.util.Arrays;
  3. public class EncodeDemo {
  4.     public static void main(String[] args) throws UnsupportedEncodingException {
  5.         String s="您好";
  6.         //gbk编码的数字
  7.         byte[] b1=s.getBytes("gbk");
  8.         System.out.println(Arrays.toString(b1));
  9.         //对数字进行iso8859-1解码
  10.         String s1=new String(b1,"iso-8859-1");
  11.         System.out.println(s1);
  12.         //获取解码后字符的数字编码
  13.         byte[] b2=s1.getBytes("iso-8859-1");
  14.         System.out.println(Arrays.toString(b2));
  15.         //数字采用正确的编码表解码
  16.         String s2= new String(b2,"gbk");
  17.         System.out.println(s2);
  18.     }
  19. }
复制代码




0 个回复

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