Java 编码
一.乱码问题 使用 FileReader 读取文件时,可以正常读取IDE默认编码格式(UTF-8)的文件,但若读取系统默认编码(中文GBK)则会产生乱码如: ���。当用记事本写入内容并保存为不同的编码时其保存的二进制码也是不同的,如UTF-8编码使用3个字节保存一个中文,GBK用2个字节保存一个中文。FileReader 底层为 FileInputStream ,在以字节流的方式读入后查询IDE默认码表,并用此码表进行转换,因此若文件保存为GBK,而 FileReader 使用 UTF-8 进行解码,二者并不匹配,因此产生乱码。 同样的,在使用 FileWriter 进行文件写入时,其首先查询IDE默认编码表,将字符转换为字节,再利用 FileOutPutStream 将字节流输入文件,此时文件内的编码即为IDE默认编码,而若想更改编码类型,则可以使用 OutputStreamWriter 指定编码表进行输出。 二.转换流转换流程图示 使用 InputStreamReader 进行转换时可自行指定编码表,从而防止乱码 使用 OutputStreamWriter 可自行指定文件保存所用编码表 三. OutputStreamWriter 的使用 OutputStreamWriter…
Share