将Windows-1252文件转换为UTF-8文件

时间:2015-02-17 11:01:32

标签: java file text utf-8 windows-1252

您好我在这个简单的转换任务中遇到了一些问题。 这是我的代码(粗略但不那么复杂):

        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();
        }
    }

但是我使用相同的编码格式获得与输入相同的输出。 你看到无论如何能够提供帮助吗?

1 个答案:

答案 0 :(得分: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"));