欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java读取txt文件乱码

程序员文章站 2022-07-04 09:48:09
...
首先,要清楚自己建立的文本文件是用什么字符集编码的,编码和解码的字符集不兼容时一定会出错。

还得知道你的操作系统默认的字符集。比如你的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();
  }
  }
  }