如何解决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、读取完一行数据记得的换行
其他的问题就是:
将文件夹中的所有指定文件都进行编码格式的改变,一个递归调用指定方法的过程罢了!
代码实现:
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编码的文件而且不乱码相关推荐
- 用java SDK/bin目录下的native2ascii.exe把.properties文件中的中文转换成unicode字符,实现国际化...
需要用到java SDK\\bin 目录下的native2ascii.exe程序,把你写的文本文件转成unicode字符即可,例: native2ascii 源文件名.txt 新文件名.txt 测试 ...
- python读excel乱码_解决Python2.7读写文件中的中文乱码问题
Python2.7对于中文编码的问题处理的并不好,这几天在爬数据的时候经常会遇到中文的编码问题.但是本人对编码原理不了解,也没时间深究其中的原理.在此仅从应用的角度做一下总结, 1.设置默认编码 在P ...
- 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码?
在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码? Posted on 2008-07-13 12:00 尹合磊 阅读(1902) 评论(0) 编辑 收藏 所属分类: ASP.N ...
- excel调用python编程-使用Python和xlwt向Excel文件中写入中文的实例
sheet1.write(row_num,0,f) row_num = 1 book.save('demo.xls') 程序执行结果如下: grey@DESKTOP-3T80NPQ:/mnt/e/01 ...
- python画图显示中文乱码_解决Python pandas plot输出图形中显示中文乱码问题
解决方式一: import matplotlib #1. 获取matplotlibrc文件所在路径 matplotlib.matplotlib_fname() #Out[3]: u'd:\\Anaco ...
- 使用Python批量筛选上千个Excel文件中的某一行数据并另存为新Excel文件(下篇)
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 野火烧不尽,春风吹又生. 大家好, ...
- 将excel文件中的内容转换成word文本(去表格)
将excel文件中的内容转换成word文本(去表格) 导语:因为最近的工作需要将excel表格中的一部分内容去掉表格框转换成word文本放到另一个word文档,所以操作就是需要去表格转换成word文本 ...
- python图片显示中文_解决Python pandas plot输出图形中显示中文乱码问题
解决方式一: import matplotlib #1. 获取matplotlibrc文件所在路径 matplotlib.matplotlib_fname() #Out[3]: u'd:\\Anaco ...
- python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。...
[单选题]李明在他所属的公司工作五年,每天都很认真地处理繁杂的事情,同事们都夸他认真,但是依然没有建树,这是因为: [多选题]品牌标志的作用表现在 [单选题]新产品开发的第一个阶段是_______. ...
- python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。(4.0分)_学小易找答案...
[单选题]文本文件存储的是(),由若干文本行组成,通常每行以换行符 '\n' 结尾.(4.0分) [单选题]()属性是返回被打开文件的访问模式.(4.0分) [单选题]重力坝是由砼或( )修筑而成的大 ...
最新文章
- 转载自——Json.net动态序列化以及对时间格式的处理
- python的工资为什么这么低-Python为什么这么火 Python岗位薪资水平如何
- ant警告 “warning: 'includeantruntime' was not set”解决方法
- picturebox 图片自适应
- 24K 内存上诞生的操作系统,是如何改变计算机世界的?
- EGLSurface 和 OpenGL ES
- ruby DBI安装使用指南
- 通过EPPlus导出Excel文件
- Android 计算网络速度文件下载剩余时间<<最优方案>>
- Starting Programe
- Android 7.0以上安装fiddler CA证书失败解决方法
- css 设置打印a4,CSS设置A4纸大小。
- SAP中物料采购PO和SA共存情况下的标准价格确定
- 程序员上班摸鱼,这么玩才高端!
- HTTP/3 强势来袭?!
- 2020年雅思机考考点将覆盖全国14城
- C#FTP对文件的操作
- Hadoop: Rack Awareness Topology
- tensorflow 1.14 ssd_mobilenet_v1 模型训练
- ssh用于验证,https://github.com/?需要,https://www.cloudcontrol.com/onboarding/ssh也需要。...