簡體   English   中英

txt文件中的特殊字符

[英]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 DataInputStreamDataOutputStream類用於序列化原始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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM