Unicode字符集字符流
Unicode:万国码
UTF-8不是字符集,是一种编码方式。
有时候会产生乱码,产生乱码的原因:读取汉字时未读完整个汉字
编码与解码规则不一样
字符流
FileReader和FileWriter是用于文件读写的字符流类。FileReader用于从文件中读取字符数据,FileWriter用于向文件中写入字符数据。
public class Test3 {public static void main(String[] args) throws IOException {//创建对象并关联本地文件FileReader fr=new FileReader("C:\\Users\\小新\\IdeaProjects\\Test\\src\\text");//2.读取数据read()//字符流的底层也是字节流,默认也是一个一个字节的读取的。//如果遇到中文就会一次读取多个,GBK一次读两个字节,UTF-8一次读取8个字节int ch;while ((ch=fr.read())!=-1){System.out.println((char)ch);}fr.close();}
}
read()细节:
1.read():默认也是一个字节一个字节的读取的,如果遇到中文就会一次读取多个
2.在读取之后,方法的底层还会进行解码并跳转成十进制。
最终把这个十进制作为返回值
这个十进制的数据也表示在字符集上的数字
如果想看到中文汉字,就是把这些十进制数据,再进行强转就可以了。
public class Test3 {public static void main(String[] args) throws IOException {//创建对象并关联本地文件FileWriter fw=new FileWriter("C:\\Users\\小新\\IdeaProjects\\Test\\src\\text",true);char[] chars={'0','b','d','大'};fw.write(chars);fw.close();}
}
字符流的底层原理: