Java を使用してファイルをパッケージ化し、圧縮ファイルを生成します。文字化けが発生する場所が 2 か所あります (推奨: java 基本チュートリアル)
1. 内容 中国語文字化け問題については、インターネット上で多くの人が解決策を提示していますが、解決策としては、sun のソースコードを変更する、オープンソースのクラスライブラリ org.apache.tools.zip.ZipOutputStream および org.apache.tools を使用する、の 2 つがあります。 .zip.ZipEntry. ant.jarには2つのクラスがあり、ダウンロードして使用することができますが、後者を選択した方が便利であることは間違いありません。
2. 圧縮ファイルコメントの中国語文字化け問題: zos.setComment("中国語テスト"); この問題をネットで長い間調べていましたが、解説している人がいなかったので、自分で解決する方法を見つけるために。
プロジェクトで作成したテストクラスは自分のマシンでは問題ないのですが、会社のプロジェクトで使用すると必ず文字化けが発生します。エンコーディングを設定するメソッド(zos.setEncoding(") gbk");)、ようやく問題が発見されました。テストプロジェクトのエンコード方式はgbk、会社プロジェクトのデフォルトエンコードはutf-8なので、テストプロジェクトには問題ありませんが、問題があります会社のプロジェクトで。
org.apache.tools.zip.ZipOutputStream は、デフォルトでプロジェクトのエンコード方式を使用します。理論的には、utf-8 は中国語もサポートします。それでも文字化けする理由がわからない場合は、変更してくださいsetEncoding メソッドを通じてそれを gbk に渡します。
ファイルを圧縮するためのコードを添付してください
package com.compress; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; public class CompressEncodingTest { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { File f = new File("中文测试.txt"); ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream( new FileOutputStream("zipTest.zip"), 1024)); zos.putNextEntry(new ZipEntry("中国人.txt")); DataInputStream dis = new DataInputStream(new BufferedInputStream( new FileInputStream(f))); zos.putNextEntry(new ZipEntry(f.getName())); int c; while ((c = dis.read()) != -1) { zos.write(c); } zos.setEncoding("gbk"); zos.setComment("中文测试"); zos.closeEntry(); zos.close(); } }
以上がJavaでzip圧縮すると文字化けする場合の解決策(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。