如何阅读在utf-8中写这个?

我收到错误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)。 从FileReader的文档 :

此类的构造函数假定默认字符编码和默认字节缓冲区大小是合适的。

使用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文件

我看到你正在用utf-8编写,但没有专门用utf-8阅读。 按照我在链接中提供的示例进行操作。

 try { Reader reader = new InputStreamReader( new FileInputStream(args[0]),"UTF-8"); BufferedReader fin = new BufferedReader(reader); Writer writer = new OutputStreamWriter( new FileOutputStream(args[1]), "UTF-8"); BufferedWriter fout = new BufferedWriter(writer); String s; while ((s=fin.readLine())!=null) { fout.write(s); fout.newLine(); } //Remember to call close. //calling close on a BufferedReader/BufferedWriter // will automatically call close on its underlying stream fin.close(); fout.close(); } catch (IOException e) { e.printStackTrace(); }