JAVA中GBK编码的文件输入乱码解决

GBK编码的文件输入乱码解决
(作者:覃煜霖,撰写时间: 2019年 04月 15日)
在java的输入中,通过节点流可以读取指定的文件,在读取的过程中,jvm会通过默认的编码对读取的文件进行编码,然后输出,如果读取的文件编码类型与默认编码类型不一致,读取到的将会是乱码,这个时候,就需要对jvm的默认编码类型进行修改或者使用代码将获取到的文件编码进行处理,本文以后者为处理方式进行解决。
1、 读取文件:
创建流:
Reader r1 = new FileReader(“E:/z/test.txt”);
创建缓存数组:
char[] c1 = new char[100];
创建记录读取长度的变量:
int count = 0;
创建StringBuilder类型的变量:
StringBuilder builder =new StringBuilder();
获取数据:
while ((count = r1.read(c1, 0, c1.length)) != -1) {
String string = new String(c1, 0, count);
builder.append(string);
}
关闭流:
r1.close();
2、 代码处理乱码情况:
由于节点流获取到的文件内容是GBK编码,而我将jvm默认编码类型设置为UTF-8,因此读取到的数据是一串乱码,需要对其进行处理。
创建字节数组,以UTF-8解码方式对数据进行解码:
byte[] bs = builder.toString().getBytes(“UTF-8”);
创建String类型变量以默认编码(UTF-8)解码方式进行数据读取:
String string2 = new String(bs);
打印出来的就是使用UTF-8解读出来的完整的非乱码数据:
System.out.println(string2);

猜你喜欢

转载自blog.csdn.net/weixin_44543103/article/details/89349659