中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

dataoutputstream亂碼如何解決

發布時間:2023-01-05 11:48:20 來源:億速云 閱讀:805 作者:iii 欄目:編程語言

本文小編為大家詳細介紹“dataoutputstream亂碼如何解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“dataoutputstream亂碼如何解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

dataoutputstream亂碼的解決辦法:1、通過“dos.write("...".getBytes());”方式寫入String;2、設置“new OutputStreamWriter(new FileOutputStream(file), "utf-8");”即可。

解決DataOutputStream亂碼的問題

這個坑我就先踩為敬了,重要的話說三遍!

千萬不要用DataOutputStream的 writeBytes 方法

千萬不要用DataOutputStream的 writeBytes 方法

千萬不要用DataOutputStream的 writeBytes 方法

我們使用 DataOutputStream 的時候,比如想寫入String ,你就會看到三個方法

public final void writeBytes(String s)
public final void writeChars(String s)
public final void writeUTF(String str)

OK,那你試著去寫入相同的內容后,再去讀取一下試試

File file = new File("d:"+File.separator+"test.txt");
  DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
  dos.writeBytes("你好");
  dos.writeChars("你好");
  dos.writeUTF("你好");
  dos.flush();
  dos.close();
 
  DataInputStream dis = new DataInputStream(new FileInputStream(file));
  byte[] b = new byte[2];
  dis.read(b);
           //  `}
  System.out.println(new String(b, 0, 2));
 
  char[] c = new char[2];
  for (int i = 0; i < 2; i++) {
   c[i] = dis.readChar();
  }
           //你好
  System.out.println(new String(c, 0, 2));
  //你好
  System.out.println(dis.readUTF());

是的,你沒看錯,writeBytes方法寫入的內容讀出來,為啥亂碼了?

點進去看看實現

public final void writeBytes(String s) throws IOException {
       int len = s.length();
       for (int i = 0 ; i < len ; i++) {
           out.write((byte)s.charAt(i));
       }
       incCount(len);
   }

大哥,這char類型被強轉為 byte類型了,失精度了呀,怪不得回不來了,所以使用的時候千萬別貪方便,老老實實換成 dos.write("你好".getBytes()); 都好的呀

DataOutputStream寫入txt文件數據亂碼

這是正常的,如果要讀,要用DataInputStream讀出,如果僅要保成文本文件直接要FileOutputStream或PrintWriter

OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
oStreamWriter.append(str);
oStreamWriter.close();

主要是編碼方式不一樣,要用字符流 而非字節流,BufferedReader類從字符輸入流中讀取文本并緩沖字符,以便有效地讀取字符,數組和行。

讀到這里,這篇“dataoutputstream亂碼如何解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜新| 易门县| 无锡市| 哈巴河县| 杭锦后旗| 沧州市| 渭南市| 常山县| 彰化市| 洪雅县| 松溪县| 桂东县| 手机| 许昌市| 张家界市| 五寨县| 河南省| 敦煌市| 牡丹江市| 龙州县| 聂荣县| 新巴尔虎右旗| 昭觉县| 白河县| 南郑县| 林芝县| 于田县| 水城县| 龙海市| 肇东市| 印江| 岐山县| 中方县| 丰县| 黔西县| 江陵县| 额尔古纳市| 延边| 色达县| 土默特右旗| 白玉县|