在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ writeInt()為什么寫入文件是亂碼?

writeInt()為什么寫入文件是亂碼?

1.
clipboard.png
結果是

clipboard.png

2.
查了下好像說顯示的底層的位操作碼,我改成使用writeUTF(),
dout.writeUTF(String.valueOf(1));
結果還是錯的,為什么?
clipboard.png

**
clipboard.png

回答
編輯回答
笨笨噠

DataOutputStream 用于保存 Java 基本類型數據,writeUTF() 使用的是一種“修改版”UTF-8.

  1. data output stream lets an application write primitive Java data types to an output stream in a portable way. An application can then use a data input stream to read the data back in.

例子

import java.io.*;
public class test{
   public static void main(String[] args) throws Exception {
      FileOutputStream fos = new FileOutputStream("out.txt");
      DataOutputStream dos = new DataOutputStream(fos);
      dos.writeUTF("nihao你好");
      dos.close();

      FileInputStream fis = new FileInputStream("out.txt");
      DataInputStream dis = new DataInputStream(fis);
      String s = (String)dis.readUTF();
      dis.close();

      System.out.println(s);
   }
}

為了避免亂碼,最好編譯時指定一下編碼

javac -encoding UTF-8 test.java

參考

2018年1月29日 13:19