0

こんにちは、この単純な変換タスクで問題が発生しています。これが私のコードです(ラフですがそれほど複雑ではありません):

        FileInputStream fis = new FileInputStream ("file");
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"CP1250"));

    try {

        StringBuilder sb = new StringBuilder();
        String line = null;
        try {
            line = reader.readLine();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        while (line != null) {
            sb.append(line);
            if(line.contains(" "))
            sb.append(System.lineSeparator());
            try {
                line = reader.readLine();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        String everything = sb.toString();
        System.out.println(everything);

        PrintWriter writer = null;
        try {
            writer = new PrintWriter("clean", "UTF-8");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        writer.println(everything);
        writer.close();
    } 

    finally {
        try {
            reader.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

しかし、同じエンコード形式で入力と同じ出力が得られます。とにかく助けることができると思いますか?

4

1 に答える 1

0

ドキュメントによると、1) public void println(String x) は文字列を出力してから行を終了します。このメソッドは、print(String) を呼び出してから println() を呼び出すかのように動作します。

2) public void print(String s) 文字列を出力します。引数が null の場合、文字列 "null" が出力されます。それ以外の場合、文字列の文字はプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換され、これらのバイトは write(int) メソッドとまったく同じ方法で書き込まれます。

あなたはおそらくあなたの変換を完了するでしょう

PrintWriter writer 
    = new PrintWriter(new OutputStreamWriter(new FileOutputStream("clean", true), 
        "UTF-8")); 
于 2015-02-17T13:10:23.720 に答える