JavaIO流中的编码解码问题

IO中的编码解码问题

Java中采用两种构造方法实现字节编码解码

编码:
byte[] getBytes():使用平台的默认字符集将该String编码为一 系列字节, 将结果存储到新的字节数组中

byte[] getBytes(String charsetName):使用指定的字符集将该String编码为一 系列字节,将结果存储到新的字节数组中
解码:
String(byte[] bytes) 
通过使用平台的默认字符集解码指定的字节数组来构造新的 String 。

String(byte[] bytes, Charset charset) 
构造一个新的String由指定用指定的字节的数组解码charset 。

例:

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class EncodeAndDecode {
    public static void main(String[] args) throws UnsupportedEncodingException {
     String s="中国";
     byte[] bytes = s.getBytes();//[-28, -72, -83, -27, -101, -67]采用系统默认的编码3个字节表示一个汉字
//   byte[] bytes = s.getBytes("GBK");//[-42, -48, -71, -6]采用GBK的的编码格式每个汉字用2个字节表示
//   byte[] bytes = s.getBytes("UTF-8");//[-28, -72, -83, -27, -101, -67]采用UTF-8的编码格式
        //解码
     String Str=new String(bytes);//采用默认的编码格式
     String str=new String(bytes,"UTF-8");//创建字符串对象传入编码对象
//   System.out.println(Arrays.toString(bytes));
        System.out.println(str);
        System.out.println(Str);
    }
}

字符流编码解码

InputStreamReader(InputStream in) 
创建一个使用默认字符集的InputStreamReader。  

InputStreamReader(InputStream in, Charset cs) 
创建一个使用给定字符集的InputStreamReader。 

OutputStreamWriter(OutputStream out) 
创建一个使用默认字符编码的OutputStreamWriter。  
OutputStreamWriter(OutputStream out, Charset cs) 
创建一个使用给定字符集的OutputStreamWriter。 

  • 字符流编码解码中的第一个参数(InputStream,OutputStream)都是传递一个输入输出对象一般为FileInputStream或者FileOutputStream
posted @ 2020-03-26 14:16  IAoli  阅读(325)  评论(0)    收藏  举报