dataoutputstream の文字化けの解決策: 1. "dos.write("...".getBytes());"; を通じて文字列を書き込みます 2. "new OutputStreamWriter(new FileOutputStream(file), "utf- 8");" で十分です。
#このチュートリアルの動作環境: Windows 10 システム、Java バージョン 8.0、Dell G3 コンピューター。
dataoutputstream が文字化けしている場合はどうすればよいですか?
DataOutputStream 文字化け問題を解決します
まずはこの罠を踏んで、大事なことは3回言います!
DataOutputStream の writeBytes メソッドは絶対に使用しないでください
DataOutputStream の writeBytes メソッドは絶対に使用しないでください
Thousands 絶対に使用しないでくださいDataOutputStream の writeBytes メソッド
DataOutputStream を使用する場合、たとえば String を書き込む場合、3 つのメソッドが表示されます
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("Hello".getBytes()); に置き換えるだけで問題ありません。
これは正常です。読み取りたい場合は DataInputStream を使用して読み取り、テキスト ファイルとして保存するだけの場合は、FileOutputStream または PrintWriter を直接使用してください
OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "utf-8"); oStreamWriter.append(str); oStreamWriter.close();
主な理由エンコード方法が異なるということです
バイト ストリームの代わりに文字ストリームを使用します
#BufferedReader クラスは、文字入力ストリームからテキストを読み取り、文字をバッファリングして、文字、配列、行を効率的に読み取ることができます。 推奨学習: 「Java ビデオ チュートリアル 」
以上がdataoutputstream が文字化けした場合はどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。