国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java壓縮zip文件中文亂碼問題解決方法

2019-11-26 15:28:18
字體:
供稿:網(wǎng)友

通常用java來打包文件生成壓縮文件后,有如下兩個地方會出現(xiàn)亂碼 :

1、內(nèi)容的中文亂碼問題,這個問題網(wǎng)上很多人給出了解決方法,主要有兩種方法:一是修改sun的源碼;另一個是使用開源的類庫org.apache.tools.zip.ZipOutputStream和org.apache.tools.zip.ZipEntry,這兩個類ant.jar中有,可以直接下載使用即可,毫無疑問,選擇后者更方便

2、壓縮文件注釋的中文亂碼問題:zos.setComment("中文測試");這個問題網(wǎng)上對應(yīng)的解決方法資料較少。在自己機器上的工程創(chuàng)建的測試類,沒有任何問題,但是在公司的項目中使用一直出現(xiàn)亂碼,通過使用設(shè)置編碼的方法(zos.setEncoding("gbk");)終于發(fā)現(xiàn)了問題,測試項目的編碼方式為gbk,而公司項目的默認(rèn)編碼是utf-8,所以測試項目沒問題而公司的項目中出現(xiàn)了問題。

org.apache.tools.zip.ZipOutputStream默認(rèn)使用項目的編碼方式,理論上講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(); }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 平顶山市| 城口县| 青田县| 定结县| 凤庆县| 延吉市| 丽水市| 三原县| 苍溪县| 长春市| 冷水江市| 汉沽区| 鹰潭市| 弥勒县| 惠州市| 巨鹿县| 凤庆县| 浦江县| 阿拉善左旗| 大关县| 贵溪市| 嘉义市| 南乐县| 东丰县| 高唐县| 米林县| 昆山市| 安阳县| 万山特区| 南宫市| 通道| 桃园县| 勐海县| 江门市| 丰顺县| 广西| 台北县| 天峨县| 尼木县| 望都县| 类乌齐县|