黑马程序员技术交流社区

标题: .转换流的字符编码 [打印本页]

作者: 心在左边跳    时间: 2015-7-9 14:07
标题: .转换流的字符编码

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

常见编码表

  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. }
复制代码









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2