真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

dataoutputstream亂碼如何解決

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

創(chuàng)新互聯(lián)主營資溪網(wǎng)站建設(shè)的網(wǎng)絡公司,主營網(wǎng)站建設(shè)方案,成都APP應用開發(fā),資溪h5成都微信小程序搭建,資溪網(wǎng)站營銷推廣歡迎資溪等地區(qū)企業(yè)咨詢

dataoutputstream亂碼的解決辦法:1、通過“dos.write("...".getBytes());”方式寫入String;2、設(shè)置“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,那你試著去寫入相同的內(nèi)容后,再去讀取一下試試

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方法寫入的內(nèi)容讀出來,為啥亂碼了?

點進去看看實現(xiàn)

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類型被強轉(zhuǎn)為 byte類型了,失精度了呀,怪不得回不來了,所以使用的時候千萬別貪方便,老老實實換成 dos.write("你好".getBytes()); 都好的呀

DataOutputStream寫入txt文件數(shù)據(jù)亂碼

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

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

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

讀到這里,這篇“dataoutputstream亂碼如何解決”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標題:dataoutputstream亂碼如何解決
地址分享:http://weahome.cn/article/ishggh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部