如何将文件读入UTF-8 Java应用程序,其中文件采用不同的字符编码?

Bes*_*ces 0 java unicode utf-8

我的应用程序设置为支持存储UTF-8字符编码.我正在读取我从其他各种组织获得的文件,这些文件可能是UTF-8,latin-1,ASCII等.我是否需要做任何特别的事情以确保将具有各种字符编码的文件读入UTF-8格式正确吗?例如,我是否需要弄清楚文件中的字符编码是什么,并将其显式转换为UTF-8?

或者以下是否足够?

Reader reader = new InputStreamReader(new FileInputStream("c:/file.txt"), "UTF-8");

jta*_*orn 6

你错了.你不读一个编码,你读编码.您作为第二个参数提供的编码InputStreamReader应该是源流(文件)预期编码.

Reader reader = new InputStreamReader(new FileInputStream("c:/file.txt"), "<encoding_of_file.txt>");
Run Code Online (Sandbox Code Playgroud)

一旦数据在内存中,它总是UTF-16.当你想写数据时(假设你总是想把它写成UTF-8),那么你将使用:

Writer writer = new OutputStreamWriter(new FileOutputStream("destfile"), "UTF-8");
Run Code Online (Sandbox Code Playgroud)