我有一个文本文件,它是ANSI编码的,我需要将其转换为UTF8编码。
我的文本文件如下:
随机规划是数学规划的一个领域,研究如何在不确定性条件下建模决策问题。例如,尽管在某个时间点上需要做出决策,但必要的信息可能要到以后才能获得。
public static void main(String[] args) throws IOException {
Path p = Paths.get("file.txt");
ByteBuffer bb = ByteBuffer.wrap(Files.readAllBytes(p));
CharBuffer cb = Charset.forName("windows-1252").decode(bb);
bb = Charset.forName("UTF-8").encode(cb);
Files.write(p, bb.array());
}
如果您喜欢,也可以在一行中编写 =)
Files.write(Paths.get("file.txt"), Charset.forName("UTF-8").encode(Charset.forName("windows-1252").decode(ByteBuffer.wrap(Files.readAllBytes(Paths.get("file.txt"))))).array());
ASCII字符子集映射到UTF8中的相同字符编码,因此文件实际上不需要任何转换。
要以UTF-8格式输出文件,您可以使用:
PrintWriter out = new PrintWriter(new File(filename), "UTF-8");
out.print(text);
out.close();
InputStream inputStream = new BufferedInputStream(new FileInputStream("D:\\sample.txt"));
Reader reader =
new InputStreamReader(inputStream, Charset.forName("UTF-8"));
我不是专家,但找到了一条链接可以帮助你: 程序化地将txt文件从ANSI格式转换为UTF-8
这方面有一些相关问题在这里得到了解释: http://www.drillio.com/en/software-development/java/encoded-string-too-long-64kb-limit/
希望这能帮到你。