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

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

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

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

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

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

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

我的初步想法:

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

过程:

将目标文件取读到流中

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

将字符串写入目标文件

注意问题:

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

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

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

其他的问题就是:

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

代码实现:

import org.apache.commons.io.IOUtils;import java.io.*;
import java.util.ArrayList;/*** Created by Administrator on 2016/12/1.*/
public class Test {String ROUTE_URL="D:/test";String srcEncode;ArrayList<File> fileArray=new ArrayList<File>();public void  trans(String filePath) throws Exception{getFileClass(new File(filePath));for (File file:fileArray){transEncode(file.getAbsolutePath());}}/*** 将文件由GBK格式读取,UTF-8格式写入* 运行的项目应该是UTF-8的项目* filePath用相对路径方便转移。如果使用绝对路径自己改一下输出流的url*/public void  transEncode(String filePath) throws Exception{File target=new File(ROUTE_URL,filePath);FileInputStream fis=new FileInputStream(filePath);BufferedReader br=new BufferedReader(new InputStreamReader(fis,srcEncode));FileOutputStream fos=new FileOutputStream(target);IOUtils.copy(br,fos);fos.flush();fis.close();fos.close();}/** 递归遍历指定目录下的指定后缀文件*//** 返回值类型 void* 参数列表  文件夹File* 出口条件:文件,后缀名是.class,如果排除的话加!即可.多个可使用全局变量**/public void getFileClass(File file){File[] files=file.listFiles();for(File f:files){if(f.isDirectory()){getFileClass(f);}else{if(f.getName().endsWith(".java") || f.getName().endsWith(".jsp")){System.out.println(f.getAbsolutePath());fileArray.add(f);}}}}}

View Code

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

  1. 用java SDK/bin目录下的native2ascii.exe把.properties文件中的中文转换成unicode字符,实现国际化...

    需要用到java SDK\\bin 目录下的native2ascii.exe程序,把你写的文本文件转成unicode字符即可,例: native2ascii 源文件名.txt 新文件名.txt 测试 ...

  2. python读excel乱码_解决Python2.7读写文件中的中文乱码问题

    Python2.7对于中文编码的问题处理的并不好,这几天在爬数据的时候经常会遇到中文的编码问题.但是本人对编码原理不了解,也没时间深究其中的原理.在此仅从应用的角度做一下总结, 1.设置默认编码 在P ...

  3. 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码?

    在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码? Posted on 2008-07-13 12:00 尹合磊 阅读(1902) 评论(0)  编辑 收藏 所属分类: ASP.N ...

  4. excel调用python编程-使用Python和xlwt向Excel文件中写入中文的实例

    sheet1.write(row_num,0,f) row_num = 1 book.save('demo.xls') 程序执行结果如下: grey@DESKTOP-3T80NPQ:/mnt/e/01 ...

  5. python画图显示中文乱码_解决Python pandas plot输出图形中显示中文乱码问题

    解决方式一: import matplotlib #1. 获取matplotlibrc文件所在路径 matplotlib.matplotlib_fname() #Out[3]: u'd:\\Anaco ...

  6. 使用Python批量筛选上千个Excel文件中的某一行数据并另存为新Excel文件(下篇)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 野火烧不尽,春风吹又生. 大家好, ...

  7. 将excel文件中的内容转换成word文本(去表格)

    将excel文件中的内容转换成word文本(去表格) 导语:因为最近的工作需要将excel表格中的一部分内容去掉表格框转换成word文本放到另一个word文档,所以操作就是需要去表格转换成word文本 ...

  8. python图片显示中文_解决Python pandas plot输出图形中显示中文乱码问题

    解决方式一: import matplotlib #1. 获取matplotlibrc文件所在路径 matplotlib.matplotlib_fname() #Out[3]: u'd:\\Anaco ...

  9. python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。...

    [单选题]李明在他所属的公司工作五年,每天都很认真地处理繁杂的事情,同事们都夸他认真,但是依然没有建树,这是因为: [多选题]品牌标志的作用表现在 [单选题]新产品开发的第一个阶段是_______. ...

  10. python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。(4.0分)_学小易找答案...

    [单选题]文本文件存储的是(),由若干文本行组成,通常每行以换行符 '\n' 结尾.(4.0分) [单选题]()属性是返回被打开文件的访问模式.(4.0分) [单选题]重力坝是由砼或( )修筑而成的大 ...

最新文章

  1. 转载自——Json.net动态序列化以及对时间格式的处理
  2. python的工资为什么这么低-Python为什么这么火 Python岗位薪资水平如何
  3. ant警告 “warning: 'includeantruntime' was not set”解决方法
  4. picturebox 图片自适应
  5. 24K 内存上诞生的操作系统,是如何改变计算机世界的?
  6. EGLSurface 和 OpenGL ES
  7. ruby DBI安装使用指南
  8. 通过EPPlus导出Excel文件
  9. Android 计算网络速度文件下载剩余时间<<最优方案>>
  10. Starting Programe
  11. Android 7.0以上安装fiddler CA证书失败解决方法
  12. css 设置打印a4,CSS设置A4纸大小。
  13. SAP中物料采购PO和SA共存情况下的标准价格确定
  14. 程序员上班摸鱼,这么玩才高端!
  15. HTTP/3 强势来袭?!
  16. 2020年雅思机考考点将覆盖全国14城
  17. C#FTP对文件的操作
  18. Hadoop: Rack Awareness Topology
  19. tensorflow 1.14 ssd_mobilenet_v1 模型训练
  20. ssh用于验证,https://github.com/?需要,https://www.cloudcontrol.com/onboarding/ssh也需要。...

热门文章

  1. 2.3 Hadoop安装与体验
  2. PGM:部分有向模型之条件随机场与链图模型
  3. php中表单名称未定义,php – zf2,表单集合没有在zf2中创建正确的输入名称
  4. Kotlin 函数(普通函数)
  5. Flutter拓展 一步一步教你安装Flutter(最火的移动框架)
  6. Android底层到上层的开发流程
  7. phthon学习笔记(3)
  8. .net在当前日期的基础上加一天
  9. 获取table控件的某行某列
  10. c语言那些细节之little-endian和big-endian