2016-11-27 16 views
0

単純に言えば、入力ファイルから行を読み込み、System.out文で読み取ったテキストを表示するJavaプログラムを作成する必要があります。ファイル内の行の1つが"ビットではありません"です。 Javaはこの行を「それはちょっとわかりません」と読みます。問題は、アポストロフィが"として読み取られていることです。私は多くのフォーラムの投稿を見ていて、アポストロフィに変換する解決策を見つけることができませんでした。私は "¢â、¬¢¢â、¬Å"とそれは入力がUTF - 8形式であることを意味したと言いましたか?これをSystem.outステートメントで正しく読み取れる形式に変換するにはどうすればよいですか。 また、問題の原因となる他のUTF-8エンコーディングテキストがある可能性があるため、すべての’をアポストロフィに変換するステートメントを強制することはできません。文字列を適切なエンコーディング形式に変換できません

+0

ファイルの作成に使用されるエンコーディングとは何ですか? – MordechayS

答えて

1

Windows-1252エンコーディングを使用してファイルを読み取っているようです。 2つのエンコーディング標準間の変換を示す良いテーブルがあります。 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")); 
関連する問題