首頁  >  文章  >  Java  >  java壓縮亂碼

java壓縮亂碼

angryTom
angryTom原創
2019-11-15 11:50:162276瀏覽

java壓縮亂碼

java壓縮亂碼

#通常用java來打包檔案產生壓縮檔案後會出現內容的中文亂碼問題,這個問題網路上很多人給了解決方法,主要有兩種方法:

一是修改sun的原始碼;

二是使用開源的類別庫org.apache .tools.zip.ZipOutputStreamorg.apache.tools.zip.ZipEntry,這兩個類別ant.jar中有,可以直接下載使用即可。

毫無疑問,選擇後者更方便,org.apache.tools.zip.ZipOutputStream預設使用專案的編碼方式,理論上講utf-8也是支援中文的,若還是亂碼,透過setEncoding方法改成gbk即可解決

範例程式碼如下:

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();
    }
}

php中文網,大量的免費Java入門教學,歡迎線上學習! 

以上是java壓縮亂碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn