如何解決java壓縮文件亂碼問題
用java來打包文件生成壓縮文件,有兩個(gè)地方會(huì)出現(xiàn)亂碼:
- 內(nèi)容的中文亂碼問題:修改sun的源碼。使用開源的類庫org.apache.tools.zip.ZipOutputStream和org.apache.tools.zip.ZipEntry,這兩個(gè)類ant.jar中有,可以下載使用即可。
- 壓縮文件注釋的中文亂碼問題:zos.setComment("中文測(cè)試");通過使用設(shè)置編碼的方法(zos.setEncoding("gbk");)發(fā)現(xiàn)問題,測(cè)試項(xiàng)目的編碼方式為gbk,而默認(rèn)編碼是utf-8。
org.apache.tools.zip.ZipOutputStream默認(rèn)使用項(xiàng)目的編碼方式,通過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("中文測(cè)試.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("中文測(cè)試"); zos.closeEntry(); zos.close(); } }
以上就是java壓縮文件亂碼問題的詳細(xì)內(nèi)容,感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。
相關(guān)文章
自己動(dòng)手寫的mybatis分頁插件(極其簡單好用)
最近做了個(gè)項(xiàng)目,需要用到mybatis分頁功能,網(wǎng)上找了很多插件,都不太合適,于是就自己動(dòng)手寫了個(gè)mybatis分頁插件功能,非常不錯(cuò),代碼簡單易懂,需要的朋友參考下吧2016-11-11ssm框架+PageHelper插件實(shí)現(xiàn)分頁查詢功能
今天小編教大家如何通過ssm框架+PageHelper插件實(shí)現(xiàn)分頁查詢功能,首先大家需要新建一個(gè)maven工程引入jar包,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-06-06如何使用try-with-resource機(jī)制關(guān)閉連接
這篇文章主要介紹了使用try-with-resource機(jī)制關(guān)閉連接的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07feign 如何獲取請(qǐng)求真實(shí)目的ip地址
這篇文章主要介紹了feign 獲取請(qǐng)求真實(shí)目的ip地址操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06SpringCloud與Consul集成實(shí)現(xiàn)負(fù)載均衡功能
負(fù)載均衡基本概念有:實(shí)服務(wù)、實(shí)服務(wù)組、虛服務(wù)、調(diào)度算法、持續(xù)性等,其常用應(yīng)用場景主要是服務(wù)器負(fù)載均衡,鏈路負(fù)載均衡。這篇文章主要介紹了SpringCloud與Consul集成實(shí)現(xiàn)負(fù)載均衡 ,需要的朋友可以參考下2018-09-09SpringBoot @Scope與@RefreshScope注解使用詳解
spring的bean管理中,每個(gè)bean都有對(duì)應(yīng)的scope。在BeanDefinition中就已經(jīng)指定scope,默認(rèn)的RootBeanDefinition的scope是prototype類型,使用@ComponentScan掃描出的BeanDefinition會(huì)指定是singleton,最常使用的也是singleton2022-11-11