2017-11-17 342 views
0

我寫了一個代碼來讀取文本文件中的數據。我想知道如何從文件加載數據後從UTF8轉換爲ASCII。以下是我編寫的代碼的一部分,但需要找到執行轉換的方式。正如我在之前的問題中所說的,我對Java很陌生,請給我一個幫助。從UTF8轉換爲Java中的ASCII

public static List<String> readFile(String filename) throws Exception { 
    String line = null; 
    List<String> records = new ArrayList<String>(); 


    BufferedReader bufferedReader = new BufferedReader(new FileReader(filename)); 



    while ((line = bufferedReader.readLine()) != null) { 
     records.add(line.trim()); 
    } 


    bufferedReader.close(); 
    return records; 
} 
+1

UTF8到ASCII轉換沒有很好地定義爲UTF-8有很多比ASCII多個字符。在您的轉換中,如果遇到不是ascii字符的UTF8字符,您希望做什麼? – vandale

+0

您是指基本ASCII字符集還是其中一個*增強型* ASCII字符集?如果只是基數,並且您的數據*可以存儲在基本ASCII中,則不需要轉換,因爲Unicode包含所有具有相同碼點值的基本ASCII字符。 – Andreas

+0

是的基本字符集,但在我原來的文件中,我有這樣的字符:Šaltenis,Simonas –

回答

0

這是你的原代碼:

public static List<String> readFile(String filename) throws Exception { 
String line = null; 
List<String> records = new ArrayList<String>(); 


BufferedReader bufferedReader = new BufferedReader(new FileReader(filename)); 



while ((line = bufferedReader.readLine()) != null) { 
    records.add(line.trim()); 
} 


bufferedReader.close(); 
return records; 
} 

將其更改爲:

public static List<String> readFile(String filename) throws Exception { 
    return Files.readAllLines(Paths.get(filename), StandardCharsets.US_ASCII); 
} 

記得導入相關的java.nio包或程序會給你一個編譯錯誤。

這裏是一個完全正常的程序:



    import java.nio.charset.StandardCharsets; 
    import java.nio.file.Files; 
    import java.nio.file.Paths; 
    import java.util.List; 

    public class Tests { 
     public static void main(String[] args) { 
      String filename = "C:\\Users\\username\\Desktop\\test.txt"; 
      try { 
       for(String s : readFile(filename)) { 
        System.out.println(s); 
       } 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

     public static List readFile(String filename) throws Exception { 
      return Files.readAllLines(Paths.get(filename), StandardCharsets.US_ASCII); 
     } 
    } 

+0

是否有任何我需要導入的工具?我收到一條消息:無法找到符號 - 可變路徑 –

+0

@CosaRamirez它位於:java.nio.file.Paths。所以繼續前進,並將java.nio *和java.nio.file *導入到類的開頭 –

+0

ok我現在做了以下操作:無法找到符號變量StandardCharsets –