gpt4 book ai didi

java - 如何在java中创建utf-8编码的文件,以便在 Notepad++ /记事本或任何其他文本编辑器中打开时显示为UTF-8编码

转载 作者:行者123 更新时间:2023-12-01 12:52:53 27 4
gpt4 key购买 nike

我尝试使用不同的阅读器使用java创建UTF-8文件。但是创建后,当我打开文件时,它不会被读取为UTF-8编码(我在 Notepad++ 中打开它,它是没有BOM的UTF-8 )。

File fileDir = new File("c:\\temp\\test.txt");

Writer out1 = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(fileDir),
Charset.forName("UTF-8").newEncoder())
);

Writer out = new OutputStreamWriter(
new FileOutputStream(fileDir),
Charset.forName("UTF-8")
);
out.append("Website UTF-8").append("\r\n");
out.append("?? UTF-8").append("\r\n");
out.append("??????? UTF-8").append("\r\n");

out.flush();
out.close();

最佳答案

您正确地以 UTF-8 编码写入文件。 (请注意,您没有使用 out1,而且没有必要)。

Notepad++ 告诉您该文件是“UTF-8 without BOM”。为什么你认为这不是 UTF-8?

BOM代表byte order mark 。它是一个特殊的 Unicode 字符,用于指示文件中的字节是采用小端顺序还是大端顺序。但对于UTF-8来说它没有任何意义,不推荐使用。来自维基百科文章:

The UTF-8 representation of the BOM is the byte sequence 0xEF,0xBB,0xBF. A text editor or web browser interpreting the text as ISO-8859-1 or CP1252 will display the characters  for this.

The Unicode Standard permits the BOM in UTF-8, but does not require nor recommend its use. Byte order has no meaning in UTF-8, so its only use in UTF-8 is to signal at the start that the text stream is encoded in UTF-8. The BOM may also appear when UTF-8 data is converted from other encodings that use a BOM.

是否有特殊原因需要包含 BOM?如果没有,那就不用担心。某些 Java XML 解析器无法正确处理 UTF-8 BOM,并且当您尝试解析以 UTF-8 编码且以 BOM 开头的 XML 文档时,会出现错误。

关于java - 如何在java中创建utf-8编码的文件,以便在 Notepad++ /记事本或任何其他文本编辑器中打开时显示为UTF-8编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24094101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com