gpt4 book ai didi

java - 如何用utf-8读写这个?

转载 作者:搜寻专家 更新时间:2023-10-30 21:39:37 25 4
gpt4 key购买 nike

我遇到错误 io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence

解决办法是用UTF-8读写文件。

我的代码是:

InputStream input = null;
OutputStream output = null;
OutputStreamWriter bufferedWriter = new OutputStreamWriter( output, "UTF8");
input = new URL(url).openStream();
output = new FileOutputStream("DirectionResponse.xml");
byte[] buffer = new byte[1024];
for (int length = 0; (length = input.read(buffer)) > 0;) {
output.write(buffer, 0, length);
}
BufferedReader br = new BufferedReader(new FileReader("DirectionResponse.xml" ));
FileWriter fstream = new FileWriter("ppre_DirectionResponse.xml");
BufferedWriter out = new BufferedWriter(fstream);

我正在读取一个 url 并将其写入文件 DirectionResponse.xml。然后读取DirectionResponse.xml并写入与*ppre_DirecionResponse.xml*相同的内容进行处理。

如何更改此设置以便以 UTF-8 完成读写?

最佳答案

首先,在重新打开文件进行输入之前,您需要调用 output.close()(或至少调用 output.flush())。这可能是您遇到问题的主要原因。

然后,您不应为此使用 FileReaderFileWriter,因为它始终使用平台默认编码(通常不是 UTF-8)。来自 the docs for FileReader :

The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate.

您在使用 FileWriter 时遇到同样的问题。替换为:

BufferedReader br = new BufferedReader(new FileReader("DirectionResponse.xml" ));

像这样:

BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream("DirectionResponse.xml"), "UTF-8"));

fstream 也是如此。

关于java - 如何用utf-8读写这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350676/

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