【问题标题】:Special characters from txt filetxt 文件中的特殊字符
【发布时间】:2011-11-13 14:54:40
【问题描述】:

我正在从 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 还很陌生,所以可能只是一些愚蠢的问题,但希望您能提供帮助。 :)

【问题讨论】:

  • 您的代码看起来正确。你怎么知道字符没有被正确读取?可能您的问题出在处理或显示字符串的代码中?

标签: java android file character


【解决方案1】:

没有理由使用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 对象一起使用。

【讨论】:

  • 开发人员使用 DataInputStream 处理文本的坏例子太多了,我一直在经历并删除它们。
【解决方案2】:

我建议该文件可能不是 UTF-8。它可能在 CP1252 中,尤其是在您使用 Windows 时。

尝试下载文件并在本地副本上运行您的代码,看看是否可行。

【讨论】:

  • 我尝试下载它,并在 Notepad++ 中打开它,它说它是 ANSI,并显示 æøå。那么如何以 ansi 格式打开文件。
  • 如果你在新的 InputStreamReader() 中保留“UTF-8”参数,我相信 Java 会为你做正确的事情。
【解决方案3】:

FTP有二进制和ASCII两种模式。确保您使用的是正确的模式。详情看这里:http://www.rhinosoft.com/newsletter/NewsL2008-03-18.asp

【讨论】:

    猜你喜欢
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2020-01-12
    • 1970-01-01
    相关资源
    最近更新 更多