簡體   English   中英

如何在 utf-8 中讀寫這個?

[英]How to read write this in 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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM