国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 宁化县| 尼勒克县| 乐都县| 盐山县| 银川市| 浦江县| 阿图什市| 甘南县| 华宁县| 盐源县| 昌平区| 乳源| 岫岩| 宜丰县| 顺义区| 清水县| 渭南市| 乐陵市| 五寨县| 达孜县| 郸城县| 乌拉特中旗| 河北区| 达拉特旗| 贵州省| 海城市| 泰顺县| 宁南县| 衡阳县| 宁强县| 石景山区| 莆田市| 新郑市| 绍兴市| 阿瓦提县| 措勤县| 绥化市| 连平县| 惠安县| 平度市| 沾化县|