java基础-java读写文件中防止乱码有关问题
java基础----java读写文件中防止乱码问题
1.按文件的编码方式utf8进行相应的解码显示和编码写入(T.java编码方式utf8)
要进行读写的文件T.java使用utf8编码方式进行编码
内容:(按utf8显示)
//你好世界杯
执行下面代码
console端显示
//你好世界杯
我爱世界杯
写入的文件T.java显示,(按照T.java的编码方式utf8)
//你好世界杯我爱世界杯
2.不按文件的编码方式gbk进行相应的解码显示和编码写入
要进行读写的文件T.java使用的是gbk编码方式进行编码
内容:(按gbk显示)
//你好中国
执行上面的代码,不按文件的真实编码方式解码和编码写入
console端显示
//����й�
我爱世界杯
原因:乱码是因为用utf8界面gbk乱码,下面的显示正确是因为显示的java的unicode
写入的文件T.java显示,(按照T.java的编码方式gbk)
//你好中国鎴戠埍涓栫晫鏉�
原因:你好中国不乱码是因为:就是用gbk编码的,用gbk解码就不会乱码
后面是新增加的,编码方式是utf8,用gbk解码显示是乱码
所以:我可以果断判断,如果用utf8解码显示,应该原有的用gbk编码的是乱码,新增加的是正常的
如下:
//����й�我爱世界杯
1.按文件的编码方式utf8进行相应的解码显示和编码写入(T.java编码方式utf8)
要进行读写的文件T.java使用utf8编码方式进行编码
内容:(按utf8显示)
//你好世界杯
执行下面代码
package com.hank.comments; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class Test { public static void main(String[] args) throws IOException { //BatchComments.java 的编码方式是utf8,在读取数据的时候也,也用utf8解码,写入时也用utf8编码后写入 //如果文件时utf8编码的,用gbk解码会乱码,同样,utf8编码的,写入时用gbk,也是乱码 File file = new File("D:/Workspaces/MyEclipse 10/ttttt/src/T.java"); String characterSet = "utf8";//file用什么编码方式存的,就用什么编码方式去读和写,如这里是utf8 //1.读取过程 InputStream is = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(is, characterSet);//文件什么编码方式存的,就用什么编码方式读取 BufferedReader br = new BufferedReader(isr); String str1 = null; while((str1 = br.readLine()) != null) { System.out.println(str1); } br.close(); isr.close(); is.close(); //2.写入过程 FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw); //把要写入的字符串都按照要写入文件的编码方式生成,再写入 String str2 = new String("我爱世界杯".getBytes(characterSet), characterSet); System.out.println(str2); bw.write(str2); bw.flush(); bw.close(); fw.close(); } }
console端显示
//你好世界杯
我爱世界杯
写入的文件T.java显示,(按照T.java的编码方式utf8)
//你好世界杯我爱世界杯
2.不按文件的编码方式gbk进行相应的解码显示和编码写入
要进行读写的文件T.java使用的是gbk编码方式进行编码
内容:(按gbk显示)
//你好中国
执行上面的代码,不按文件的真实编码方式解码和编码写入
console端显示
//����й�
我爱世界杯
原因:乱码是因为用utf8界面gbk乱码,下面的显示正确是因为显示的java的unicode
写入的文件T.java显示,(按照T.java的编码方式gbk)
//你好中国鎴戠埍涓栫晫鏉�
原因:你好中国不乱码是因为:就是用gbk编码的,用gbk解码就不会乱码
后面是新增加的,编码方式是utf8,用gbk解码显示是乱码
所以:我可以果断判断,如果用utf8解码显示,应该原有的用gbk编码的是乱码,新增加的是正常的
如下:
//����й�我爱世界杯