2017-11-17 142 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 –