ホームページ  >  記事  >  Java  >  Java圧縮ファイルの文字化け問題

Java圧縮ファイルの文字化け問題

尚
オリジナル
2019-12-21 16:38:562244ブラウズ

Java圧縮ファイルの文字化け問題

Java を使用してファイルをパッケージ化し、圧縮ファイルを生成します。文字化けが発生する場所は 2 か所あります:

1. 中国語のコンテンツの文字化けの問題: ソース コードを変更します。太陽の。オープン ソース クラス ライブラリ org.apache.tools.zip.ZipOutputStream および org.apache.tools.zip.ZipEntry を使用します。これら 2 つのクラスは ant.jar で入手でき、ダウンロードして使用できます。

2. 圧縮ファイルのコメントの中国語文字化け問題: zos.setComment("中国語テスト"); 設定エンコーディングメソッド (zos.setEncoding("gbk");) を使用して問題を見つけ、プロジェクトのエンコーディング モードは gbk で、デフォルトのエンコーディングは utf-8 です。

org.apache.tools.zip.ZipOutputStream はデフォルトでプロジェクトのエンコード メソッドを使用しますが、これは setEncoding メソッドを使用して gbk に変更することで解決できます。

java 圧縮ファイル コード:

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 の詳細については、java 基本チュートリアル 列に注目してください。

以上がJava圧縮ファイルの文字化け問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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