91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

南投市| 林西县| 乌兰浩特市| 虎林市| 旌德县| 尚志市| 炉霍县| 铁岭市| 蒙自县| 新民市| 汉中市| 英德市| 江城| 南宫市| 河南省| 海丰县| 广元市| 白城市| 会东县| 成都市| 宁远县| 利辛县| 通榆县| 泊头市| 且末县| 榕江县| 新干县| 启东市| 涿州市| 海丰县| 武胜县| 黎平县| 宜黄县| 沁源县| 肥乡县| 合阳县| 宁陵县| 托里县| 柳林县| 安远县| 乐平市|