如何解决GBK的编码的文件中的中文转换成为UTF-8编码的文件而且不乱码

Posted guoDaXia的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决GBK的编码的文件中的中文转换成为UTF-8编码的文件而且不乱码相关的知识,希望对你有一定的参考价值。

首先我们必须明确一点,为什么正常转换会乱码?

 

因为我们的数据写入是GBK写入的,然后展示的话是按照文件保存形势展示的,前面保存形势是GBK,一致,所以不乱码,而后面将保存形势变成了UTF-8,但是写入的内容是GBK形势的,编码解码方式不一致,所以产生乱码。

 

我们一般的解决乱码的思路是:

String s=new String(str.getBytes("GBK"),"UTF-8");

我将它解决的思路也是这样子的:

首先我们知道引起乱码的只是因为中文,中文乱码的方式看起来就是上面那样解决的。

将文件的编码改变,而且里面的内容的编写编码也随之改变,很显然不是单纯地对文件进行格式改变,改变格式的同时必定要改变文件的内容。

我的初步想法:

将文件内容读取到流中,然后按指定编码写入到目标文件中。

过程:

将目标文件取读到流中

读取源文件中的信息用字符串的形式展示,

将字符串写入目标文件

 

注意问题:

1、读取目标文件默认读取编码是当前项目编码而不是源文件编码,我们可以使用FileInputStream的含有编码方式的构造达到我们的要求

2、取读每一行字符串后的写入其实是不需要转换字符串格式的。就像我就犯了一个错误,我前面将读取成功的字符串通过new String(getBytes("GBK"),"UTF-8");的形式再次写入文件中,导致一直乱码,忽略了一个问题,就是我读取文件的时候其实已经解码了,此时字符串的编码方式应该就是我的项目编码方式了。

3、读取完一行数据记得的换行

 

其他的问题就是:

将文件夹中的所有指定文件都进行编码格式的改变,一个递归调用指定方法的过程罢了!

以上是关于如何解决GBK的编码的文件中的中文转换成为UTF-8编码的文件而且不乱码的主要内容,如果未能解决你的问题,请参考以下文章

utf-8编码的页面如何转成gbk编码的页面(急)

如何解决代码GBK/UTF-8等字符,编码显示乱码

如何解决linux上有中文命名的文件名压缩后下载到windows上再解压出来都是乱码?

如何解决linux上有中文命名的文件名压缩后下载到windows上再解压出来都是乱码?

C# 转换编码 如何从utf-8转换到gb2312

如何将gbk 编码的字符串转换成 utf