2016-11-27 113 views
0

簡而言之,我必須創建一個Java程序,該程序從輸入文件中讀取行並顯示在System.out語句中讀取的文本。文件中的其中一行是「是不是有點」。 Java然後讀取這條線作爲「這不是有點」。問題是撇號正在被讀作「」「。我一直在尋找許多論壇帖子,並且找不到能將「轉換」回撇號的解決方案。我搜索了什麼「“甚至是什麼,它說這意味着輸入是UTF-8格式?我如何將它轉換爲在System.out語句中正確讀取的格式。 另外,我不能蠻力強制將所有出現的'轉換成撇號的語句,因爲可能有其他UTF-8編碼文本會導致問題,所以我不能只是蠻橫地強制每一種可能性。無法將字符串轉換爲正確的編碼格式

+0

什麼是用於創建文件的編碼? – MordechayS

回答

1

看起來您正在使用Windows-1252編碼來讀取文件。這裏有很好的表格顯示了兩種編碼標準之間的轉換。 http://www.i18nqa.com/debug/utf8-debug.html

該字符實際上並不是',而是實際上是。您可以指定在讀取文件時使用的編碼。看下面的例子。

import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.nio.charset.Charset; 
import java.nio.file.Files; 
import java.nio.file.Paths; 

public class ReadFile { 
public static void main(String[] args) throws IOException { 
    final ReadFile readFile = new ReadFile(); 
    readFile.read("Windows-1252"); 
    readFile.read("UTF-8"); 
} 

private void read(final String charsetName) throws IOException { 
    //Java 8 version 
    Files.lines(Paths.get("myFile.txt"), Charset.forName(charsetName)).forEach(System.out::println); 


    //Older Java version 
    final BufferedReader bufferedReader2 = new BufferedReader(
      new InputStreamReader(new FileInputStream("myFile.txt"), charsetName)); 

    String currentLine; 
    while ((currentLine = bufferedReader2.readLine()) != null) { 
     System.out.println(currentLine); 
    } 
} 
} 
+0

這對我有用。謝謝! – user3858843

0

如果您想在文件讀取時指定編碼,可以試試這個。

Reader reader = new InputStreamReader(new FileInputStream("path"), "UTF-8")); 
相關問題