Java读取txt资料乱码
Java读取txt文件乱码
首先,要清楚自己建立的文本文件是用什么字符集编码的,编码和解码的字符集不兼容时一定会出错。
还得知道你的操作系统默认的字符集。比如你的windows用的是gbk。
当在不知道自己的txt是什么编码格式的情况下,可以把文件另存为UTF-8,然后在代码里对其进行相应的解码就可以了。
下面是一个例子:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
/**
* 读取TXE数据
*
* @author MIAOHUI
*
* TXT文本内容格式1 :
* A1:A2:A3:A4:A5-
* B1:B2:B3:B4:B5-
* C1:C2:C3:C4:C5-
*
* TXT文本内容格式2 :
* A1:A2:A3:A4:A5-B1:B2:B3:B4:B5-C1:C2:C3:C4:C5-
*
*/
public class Utils {
public static void main(String arg[]) {
try {
String encoding = "UTF-8"; // 字符编码(可解决中文乱码问题 )
File file = new File("c:/accounts.txt");
if (file.isFile() && file.exists()) {
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), encoding);
BufferedReader bufferedReader = new BufferedReader(read);
String lineTXT = null;
while ((lineTXT = bufferedReader.readLine()) != null) {
// System.out.println(lineTXT );
//将文本读取出来的字符去掉"," 因为读取出来的字符是用","来分隔的
String text = lineTXT.replaceAll(",", "");
//用字符分隔成数组
String[] version_1 = text.split("-");
for (int i = 0; i < version_1.length; i++) {
String[] version_2 = version_1[i].split(":");
for (int j = 0; j < version_2.length; j++) {
System.out.println(version_2[j]);
}
System.out.println("-------");
}
}
read.close();
}else{
System.out.println("找不到指定的文件!");
}
} catch (Exception e) {
System.out.println("读取文件内容操作出错");
e.printStackTrace();
}
}
}
我的java程序是UTF-8的格式,去读取不管什么格式的txt文件都要读正确怎么做啊
你这个现在还不是只能读取文件格式为UTF-8的txt文件
当java程序是GBK时就不会出现乱码
首先,要清楚自己建立的文本文件是用什么字符集编码的,编码和解码的字符集不兼容时一定会出错。
还得知道你的操作系统默认的字符集。比如你的windows用的是gbk。
当在不知道自己的txt是什么编码格式的情况下,可以把文件另存为UTF-8,然后在代码里对其进行相应的解码就可以了。
下面是一个例子:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
/**
* 读取TXE数据
*
* @author MIAOHUI
*
* TXT文本内容格式1 :
* A1:A2:A3:A4:A5-
* B1:B2:B3:B4:B5-
* C1:C2:C3:C4:C5-
*
* TXT文本内容格式2 :
* A1:A2:A3:A4:A5-B1:B2:B3:B4:B5-C1:C2:C3:C4:C5-
*
*/
public class Utils {
public static void main(String arg[]) {
try {
String encoding = "UTF-8"; // 字符编码(可解决中文乱码问题 )
File file = new File("c:/accounts.txt");
if (file.isFile() && file.exists()) {
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), encoding);
BufferedReader bufferedReader = new BufferedReader(read);
String lineTXT = null;
while ((lineTXT = bufferedReader.readLine()) != null) {
// System.out.println(lineTXT );
//将文本读取出来的字符去掉"," 因为读取出来的字符是用","来分隔的
String text = lineTXT.replaceAll(",", "");
//用字符分隔成数组
String[] version_1 = text.split("-");
for (int i = 0; i < version_1.length; i++) {
String[] version_2 = version_1[i].split(":");
for (int j = 0; j < version_2.length; j++) {
System.out.println(version_2[j]);
}
System.out.println("-------");
}
}
read.close();
}else{
System.out.println("找不到指定的文件!");
}
} catch (Exception e) {
System.out.println("读取文件内容操作出错");
e.printStackTrace();
}
}
}
1 楼
samjay
2011-10-14
你这个现在还不是只能读取文件格式为UTF-8的txt文件
当java程序是GBK时就不会出现乱码
2 楼
starbhhc
2012-01-17
String actionMessage = new String(p.getProperty(tsxx).getBytes(
"ISO-8859-1"), "GBK");这样转换一下。
"ISO-8859-1"), "GBK");这样转换一下。