使用apache comons更改文件的编码io不起作用?

时间:2017-05-02 13:16:11

标签: java notepad++ apache-commons-io

我尝试使用FileUtils更改txt文件的编码,但在执行该函数后,我使用NotePad ++检查文件的编码,但编码没有变化文件。

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;


 public class FileManager {


     public void changeFileCharset(File file) throws IOException{

            String content = FileUtils.readFileToString(file, "ISO-8859-1");
            FileUtils.write(file, content, "UTF-8");

    }

        public static void main(String[] args) throws IOException {
            FileManager fileManager = new FileManager();
            fileManager.changeFileCharset(new File("unknown_words.txt"));
        }

}

我也使用BufferedReaderBufferedWriter尝试了此功能,但我什么都没得到。

 public static void transform(File source, String srcEncoding, File target, String tgtEncoding) throws IOException {
        try (
          BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(source), srcEncoding));
          BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(target), tgtEncoding)); ) {
              char[] buffer = new char[16384];
              int read;
              while ((read = br.read(buffer)) != -1)
                  bw.write(buffer, 0, read);
        } 
    }

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

     FileManager manager = new FileManager();
     File file = new File("test.txt");
     File file1 = new File("test1.txt");
     manager.transform(file, "UTF-8", file1, "ISO-8859-1");

    }

这是两张图片,显示了源文件和目标文件的编码:

enter image description here enter image description here

使用NotePad ++的charset check方法是不好的,还是什么?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

编码不是“加密”(正如你所说)。此外,Notepad ++并不总是很容易确定文件使用的编码。例如,如果所有内容都是纯ASCII字符,则UTF-8和ISO-8859-1编码文件之间没有区别。

您应该添加一些包含带法语口音的单词的文字。然后在告诉Notepad ++将它们读作UTF-8和ANSI后查看文件,并查看哪些编码结果是可读文本。