java - txt文件中的特殊字符

标签 java android file character

我正在使用通用 ftp 库从 ftp 下载文本文件。

问题是当我逐行将文件读入数组时,它不包含 æøå 等字符。相反,它只显示“?”性格。

这是我的代码

  FileInputStream fstream = openFileInput("name of text file");
  BufferedReader br = new BufferedReader(new InputStreamReader(fstream, "UTF-8"));
  String strLine;

  ArrayList<String> lines = new ArrayList<String>(); 

  while ((strLine = br.readLine()) != null)   {
      lines.add(strLine);
  }

  String[] linjer = lines.toArray(new String[0]);

  ArrayList<String> imei = new ArrayList<String>(); 

  for(int o=0;o<linjer.length;o++)
  {
      String[] holder = linjer[o].split(" - ");
      imei.add(holder[0] + " - " + holder[2]);
  }

  String[] imeinr = imei.toArray(new String[0]);

我尝试将 UTF-8 放入我的 inputstreamreader 中,并且尝试使用 UnicodeReader 类,但没有成功。

我是 Java 的新手,所以可能只是一些愚蠢的问题,但希望您能提供帮助。 :)

最佳答案

没有理由使用DataInputStreamDataInputStreamDataOutputStream 类用于序列化原始 Java 数据类型(“序列化”意味着读取/写入数据到文件)。您只是逐行读取文本文件的内容,因此没有必要使用 DataInputStream,并且可能会产生不正确的结果。

FileInputStream fstream = openFileInput("name of text file");
//DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream, "UTF-8"));

专业 Java 程序员提示:foreach 循环是最近添加到 Java 编程语言中的。它允许程序员遍历数组的内容而无需定义循环计数器。这会简化您的代码,使其随着时间的推移更易于阅读和维护。

for(String line : linjer){
  String[] holder = line.split(" - ");
  imei.add(holder[0] + " - " + holder[2]);
}

注意:Foreach 循环也可以与 List 对象一起使用。

关于java - txt文件中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112417/

相关文章:

java - 如何从我的消息界面生成区域设置属性文件?

java - 如何在Spring WebFlux中设置ViewResolver

java - 分割一个sql结果集,然后使用数组的每一部分进行查询

android - recyclerview 的最小 sdk 以及用它替换 listview 的优缺点

java - 警报管理器不工作 Android Java

android - 如何创建 Android Market 链接以列出开发人员的所有应用程序?

c++ - 在 C++ 中,fseek 函数会刷新缓冲区中的数据吗?

java - 创建一个 'Empty Shell' Jar

java - 了解 lsof 输出

从 JSP 上传文件时出现 java.io.FileNotFoundException