在使用字节流读取文本内容后,将读取内容打出到控制台,发现乱码。
但是将改文本文件内容复制到另一个文本文件中时,内容正常显示汉字。
FileInputStream fis =new FileInputStream("C:\\Users\\PCTC\\Desktop\\file\\map.txt");
FileOutputStream fos = new FileOutputStream("C:\\Users\\PCTC\\Desktop\\file\\map1.txt");
int by ;
while ((by = fis.read()) != -1){
System.out.print((char)by);
fos.write(by);
}
fis.close();
fos.close();
因为复制文件时是读取一个字节写入一个字节。然后最终根据这些字节流拼成汉字。
一个汉字存储:
如果是GBK编码,占用2个字节
如果是UTF - 8编码,占用3个字节
public static void main(String[] args) throws UnsupportedEncodingException {
// String a = "abc";
// byte[] bys =a.getBytes(); //[97, 98, 99]
String s = "中国";
// byte[] bys = s.getBytes(); [-28, -72, -83, -27, -101, -67]
// byte[] bys = s.getBytes("Utf-8"); [-28, -72, -83, -27, -101, -67]
byte[] bys = s.getBytes("GBK");//[-42, -48, -71, -6]
System.out.println(Arrays.toString(bys));
}
**
采用何种规则编码,就要采用对应规则解码,否则就会出现乱码
**
String s = "中国";
byte[] bys = s.getBytes("Utf-8");
System.out.println(Arrays.toString(bys));
String sa = new String(bys,"Utf-8");
System.out.println(sa);
输入结果为
[-28, -72, -83, -27, -101, -67]
中国