[英]Special characters from txt file
我正在使用通用的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
對象一起使用。
我建議該文件可能不在UTF-8中。 它可能在CP1252中或其他版本中,尤其是在使用Windows的情況下。
嘗試下載文件並在本地副本上運行代碼以查看是否可行。
FTP具有二進制和ascii兩種模式。 確保使用正確的模式。 在此處查看詳細信息: http : //www.rhinosoft.com/newsletter/NewsL2008-03-18.asp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.