我正在使用通用 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 的新手,所以可能只是一些愚蠢的问题,但希望您能提供帮助。 :)
最佳答案
没有理由使用DataInputStream
。 DataInputStream
和 DataOutputStream
类用于序列化原始 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/