検索
ホームページJava&#&ベースdataoutputstream が文字化けした場合はどうすればよいでしょうか?

dataoutputstream の文字化けの解決策: 1. "dos.write("...".getBytes());"; を通じて文字列を書き込みます 2. "new OutputStreamWriter(new FileOutputStream(file), "utf- 8");" で十分です。

dataoutputstream が文字化けした場合はどうすればよいでしょうか?

#このチュートリアルの動作環境: 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()); に置き換えるだけで問題ありません。

DataOutputStream は文字化けしたデータを txt ファイルに書き込みます

これは正常です。読み取りたい場合は DataInputStream を使用して読み取り、テキスト ファイルとして保存するだけの場合は、FileOutputStream または PrintWriter を直接使用してください

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

主な理由エンコード方法が異なるということです

バイト ストリームの代わりに文字ストリームを使用します

#BufferedReader クラスは、文字入力ストリームからテキストを読み取り、文字をバッファリングして、文字、配列、行を効率的に読み取ることができます。

推奨学習: 「

Java ビデオ チュートリアル

以上がdataoutputstream が文字化けした場合はどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。