admin 管理员组文章数量: 1184232
2024年3月19日发(作者:shell脚本判断是否执行成功)
Java读取TXT文本文件乱码解决方案
今天在解析一个文本文件的时候出现了乱码,以前从未遇到,花了点时间解决了,在此
总结一下:
首先,先看一下解析的代码:
private String[] getProjectData(File file){
}
String[] data = null;
try {
}
return data;
BufferedReader br = new BufferedReader(new FileReader(file));
String str = ne();
data = ("t");
();
tackTrace();
tackTrace();
} catch (FileNotFoundException e) {
} catch (IOException e) {
这个方法很简单,就是获取txt文件中的一行数据,然后转换为数组,我这个文本中只有一
行。就这种情况下获取到的str是乱码,我想出现乱码肯定是字符集编码的问题,然后自己
新建了一个文本文档测试没有问题(开始用的文本时别的程序导出的),所以我估计是开始
那个txt文件编码的问题,查看发现是Unicode编码(如何查看txt的编码呢,教你一个笨笨
的办法:打开文件——另存为,然后看到最下面的编码,默认选择的就是当前文档的编码格
式),问题就出现在这里。问题找到了就好解决了,修改代码为:
private String[] getProjectData(File file){
}
String[] data = null;
try {
}
return data;
BufferedReader br = new BufferedReader(new
String str = ne();
data = ("t");
();
tackTrace();
tackTrace();
InputStreamReader(new FileInputStream(file),"UTF-16"));
} catch (FileNotFoundException e) {
} catch (IOException e) {
使用文件流读取,转换编码为“UTF-16”,这样乱码问题就解决了。
归纳一下:
txt文本文档有四种编码选项:ANSI、Unicode、Unicode big endian、UTF-8;默认应该是ANSI
选项,就是系统的默认编码,一般是GBK,这种情况下用第一段代码解析是没有问题的,
也不需要转码;其他格式就需要用第二段代码对应转码了,Unicode对应UTF-16,UTF-8
就不用说了。
关于获取txt文件编码,我们可能有时候需要用程序获取,动态判断,这里给一点资料,参
考参考:
ANSI: 无格式定义
Unicode: 前两个字节为FFFE Unicode文档以0xFFFE开头
Unicode big endian: 前两字节为FEFF
UTF-8: 前两字节为EFBB UTF-8以0xEFBBBF开头
用程序取出前几个字节并进行判断即可。
package ;
import edReader;
import edWriter;
import ;
import tFoundException;
import ader;
import iter;
import ption;
import ist;
import ;
public class ReadWritTxtFileIO {
//
//
String path = "d:/";
String[] str = writeToDat(path);
n(" == " +);
for (int i = 0; i < ; i++) {
}
n(str[i]);
String[] splitStr = str[i].split("#");
n(" == " +);
for(int j = 0; j < ; j++)
{
}
n(splitStr[j]);
WriteDate();
public static void main(String[] args)
{
ReadDate(); //
版权声明:本文标题:Java读取TXT文本文件乱码解决方案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710815973a574544.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。