Java 書き込みファイルが文字化けする
ファイル ストリームを読み書きするときに、当然のことですが、コード化けの原因は同じではない ここでは、ファイルのエンコード形式に起因するコード化けの問題を中心に紹介します。まず、テキスト ファイルとバイナリ ファイルの概念と違いを明確にしましょう。
テキスト ファイルは文字エンコーディングに基づいたファイルです。一般的なエンコーディングには、ASCII エンコーディング、UNICODE エンコーディング、ANSI エンコーディングなどが含まれます。バイナリ ファイルは値のエンコードに基づいたファイルであり、特定のアプリケーションに応じて特定の値が何を意味するかを指定できます (このようなプロセスはカスタム エンコードとみなすことができます)
したがって、テキスト ファイルは基本的に固定長エンコードです(UTF-8などの非固定長エンコードもあります)。バイナリ ファイルは値エンコードであるため、可変長エンコードとみなすことができ、値を何ビットで表すかは完全にユーザー次第です。
具体的な操作は次のとおりです。
ファイルで指定された形式でファイルを書き込みます。
/** * 按照指定的路径和编码格式保存文件内容,这个方法因为用到了字符串作为载体,为了正确写入文件(不乱码),只能写入文本内容,安全方法 * * @param data * 将要写入到文件中的字节数据 * @param path * 文件路径,包含文件名 * @return boolean * 当写入完毕时返回true; */ public static boolean writeFile(byte data[], String path , String code){ boolean flag = true; OutputStreamWriter osw = null; try{ File file = new File(path); if(!file.exists()){ file = new File(file.getParent()); if(!file.exists()){ file.mkdirs(); } } if("asci".equals(code)){ code = "GBK"; } osw = new OutputStreamWriter(new FileOutputStream(path),code); osw.write(new String(data,code)); osw.flush(); }catch(Exception e){ e.printStackTrace(); log.info("toFile IO Exception:"+e.getMessage()); flag = false; }finally{ try{ if(osw != null){ osw.close(); } }catch(IOException e){ e.printStackTrace(); log.info("toFile IO Exception:"+e.getMessage()); flag = false; } } return flag; }
php 中国の Web サイトには無料の Java 入門書が多数あります。チュートリアル、オンライン学習を歓迎します!
以上がJava が文字化けしたファイルを書き込むの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。