2

テキスト ファイルから文字列を読み取り、それらを結合し、書き戻す単純な Java コードをいくつか書きました。(出力に変更のない単純化されたバージョンについては、以下のスニペットを参照してください)

問題は、入力ファイルと出力ファイルで特定の文字 (- と ...) が異なることです。ダッシュと省略記号は、出力ファイルでは判読できない特殊な文字として表示されます。私はそれらを変更するつもりはありませんでした。これを避けるために使用すべき特定のエンコーディングがあると思います。

Windowsで実行しています。複数のエディター (メモ帳、ワードパッド、および Word) でダッシュと省略記号の代わりに奇妙な文字が表示されます。

BufferedReader inFile = new BufferedReader(new FileReader("in.txt"));
PrintWriter out = new PrintWriter(new FileWriter("out.txt"));
String line;
while ((line=inFile.readLine()) != null)
{
     out.println(line);
}
4

3 に答える 3

2

リビジョン

あなたの入力はオンですANSI windows-1252

したがって、これでうまくいくはずです:

public static void main(String[] args) throws Exception {

        File f = new File("in.txt");
        FileInputStream stream = new FileInputStream(f);
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream, Charset.forName("windows-1252")));
        String x;
        BufferedWriter writer = new BufferedWriter(new FileWriter(new File("testing.txt")));

        while((x = reader.readLine()) != null) {
            writer.write(x);
            writer.newLine();
        }

        writer.close();
}
于 2012-09-28T00:12:37.140 に答える
0

以下のように、BufferedReader で MimeType を使用してみてください。

    InputStream myFileStream = new FileInputStream("in.txt");
    BufferedReader inFile = new BufferedReader(new InputStreamReader(myFileStream , "utf-8"));

上記で問題が解決しない場合は、MIME タイプの値を「utf-8」などの他の MIME タイプに変更してみてください。それでもうまくいかない場合は、「in.txt」ファイルを共有してください。

于 2012-09-28T02:39:06.847 に答える