Lösung für verstümmelten Datenausgabestream: 1. Schreiben Sie einen String über „dos.write(“....getBytes());“ 2. Setzen Sie „new OutputStreamWriter(new FileOutputStream(file), „utf-8“); „Das ist es.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Java Version 8.0, Dell G3-Computer.
Was soll ich tun, wenn der Datenausgabestream verstümmelt ist?
Das Problem der verstümmelten Zeichen von DataOutputStream lösen
Ich werde diese Grube zuerst meiden und die wichtigen Dinge dreimal sagen!
Verwenden Sie niemals die writeBytes-Methode von DataOutputStream.
Verwenden Sie niemals die writeBytes-Methode von DataOutputStream.
Verwenden Sie niemals die writeBytes-Methode von DataOutputStream Ich werde drei Methoden sehen ?
Klicken Sie rein, um die Implementierung zu sehenpublic final void writeBytes(String s) public final void writeChars(String s) public final void writeUTF(String str)Bruder, dieser char-Typ wurde zwangsweise in den Byte-Typ konvertiert und die Genauigkeit ist verloren gegangen, also seien Sie nicht gierig nach Bequemlichkeit Wenn Sie es verwenden, ändern Sie es ehrlich. Es ist alles gut. DataOutputStream schreibt TXT-Dateidaten mit verstümmelten Zeichen. Das ist normal. Verwenden Sie DataInputStream, um es auszulesen. Wenn Sie nur den Erfolg beibehalten möchten, benötigen Textdateien direkt FileOutputStream oder PrintWriter
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());Der Hauptgrund ist, dass die Codierungsmethode unterschiedlich ist. Verwenden Sie einen Zeichenstrom anstelle eines Bytestroms Die BufferedReader-Klasse liest Text aus dem Zeicheneingabestream und puffert die Zeichen für ein effizientes Lesen von Zeichen, Arrays und ZeilenEmpfohlenes Lernen: „
Das obige ist der detaillierte Inhalt vonWas tun, wenn der Datenausgabestream verstümmelt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!