Javaでzip圧縮すると文字化けする場合の解決策(コード付き)

リリース: 2019-12-06 16:51:50
オリジナル
2619 人が閲覧しました

Javaでzip圧縮すると文字化けする場合の解決策(コード付き)

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!