首頁 Java java教程 ZipInputStream解壓中文文件名失敗?如何正確設置字符集?

ZipInputStream解壓中文文件名失敗?如何正確設置字符集?

Apr 19, 2025 pm 04:33 PM
linux windows apache 作業系統 macos cos red

ZipInputStream解壓中文文件名失敗?如何正確設置字符集?

ZipInputStream解壓中文文件名問題及解決方案

許多開發者在使用ZipInputStream解壓包含中文文件名或文件夾名的Zip壓縮包時,常常遭遇字符編碼問題,導致解壓失敗,並提示類似“malformed input off : 1, length : 1”的錯誤。本文將深入分析此問題,並提供有效的解決方案。

問題根源在於ZipInputStream構造方法中指定的字符集並非用於解壓文件內部文件名編碼,而是用於讀取Zip文件本身的中央目錄信息。中央目錄的編碼取決於壓縮包的創建環境和操作系統。 Windows系統通常使用GB2312或GBK編碼,而macOS和Linux系統通常使用UTF-8編碼。

因此,如果一個Zip壓縮包是在Windows系統下創建的,其中央目錄很可能使用GBK編碼。即使代碼中指定了UTF-8編碼, ZipInputStream仍然無法正確解析GBK編碼的中央目錄,從而導致解壓失敗。

解決方案:

針對Windows系統創建的Zip包,建議使用GBK編碼讀取中央目錄:

 FileInputStream input = new FileInputStream(targetPath);
ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input), Charset.forName("GBK"));
登入後複製

由於GBK編碼兼容GB2312,此方法同樣適用於GB2312編碼的中央目錄。

跨平台解決方案:

為了編寫更健壯的跨平台兼容代碼,推薦使用Apache Commons Compress庫。該庫提供更強大的壓縮/解壓縮功能,能夠自動處理不同編碼的Zip壓縮包,有效避免因字符集差異導致的解壓失敗。 它能自動檢測並處理不同編碼的中央目錄信息,簡化開發流程,並提升代碼的可靠性。

以上是ZipInputStream解壓中文文件名失敗?如何正確設置字符集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1662
14
CakePHP 教程
1419
52
Laravel 教程
1311
25
PHP教程
1262
29
C# 教程
1234
24
歐易交易所app官網下載蘋果手機下載 歐易交易所app官網下載蘋果手機下載 Apr 28, 2025 pm 06:57 PM

歐易交易所app支持蘋果手機下載,訪問官網,點擊“蘋果手機”選項,在App Store中獲取並安裝,註冊或登錄後即可進行加密貨幣交易。

MACOS:安全性,隱私和可靠性 MACOS:安全性,隱私和可靠性 Apr 24, 2025 am 12:08 AM

macOS在安全性、隱私保護和可靠性方面表現出色:1)安全性通過沙箱技術、Gatekeeper和XProtect等多層防禦策略保護系統;2)隱私保護通過TCC框架讓用戶控制應用對敏感數據的訪問;3)可靠性通過定期更新和TimeMachine備份確保系統穩定運行。

nginx和apache:了解關鍵差異 nginx和apache:了解關鍵差異 Apr 26, 2025 am 12:01 AM

NGINX和Apache各有優劣,選擇應基於具體需求。 1.NGINX適合高並發場景,因其異步非阻塞架構。 2.Apache適用於需要復雜配置的低並發場景,因其模塊化設計。

Linux操作:管理文件,目錄和權限 Linux操作:管理文件,目錄和權限 Apr 23, 2025 am 12:19 AM

在Linux中,文件和目錄管理使用ls、cd、mkdir、rm、cp、mv命令,權限管理使用chmod、chown、chgrp命令。 1.文件和目錄管理命令如ls-l列出詳細信息,mkdir-p遞歸創建目錄。 2.權限管理命令如chmod755file設置文件權限,chownuserfile改變文件所有者,chgrpgroupfile改變文件所屬組。這些命令基於文件系統結構和用戶、組系統,通過系統調用和元數據實現操作和控制。

MacOS與Linux:探索差異和相似之處 MacOS與Linux:探索差異和相似之處 Apr 25, 2025 am 12:03 AM

Macosandlinuxbothofferuniquerenths:Macosprovidesa-frignlylexperienceWithExcelenthardArdWareIntegration,而Lilinuxexcelsinflexibilitionallibility andCommunitysupport.macos,evartednebyBybyBybyBybyByapple,issone bybyapple,seknoybyapple

幣安官網入口 幣安官方最新入口2025 幣安官網入口 幣安官方最新入口2025 Apr 28, 2025 pm 07:54 PM

訪問幣安官網,並查看HTTPS和綠鎖標誌,避免釣魚網站,官方應用也可安全訪問。

使用Apache:構建和託管網站 使用Apache:構建和託管網站 Apr 25, 2025 am 12:07 AM

Apache是一種開源Web服務器軟件,廣泛用於網站託管。安裝步驟:1.在Ubuntu上使用命令行安裝;2.配置文件位於/etc/apache2/apache2.conf或/etc/httpd/conf/httpd.conf。通過模塊擴展,Apache支持靜態和動態內容託管,優化性能和安全性。

當前的MacOS:您需要知道的一切 當前的MacOS:您需要知道的一切 Apr 27, 2025 am 12:16 AM

macOSSonoma是2023年推出的最新版本。 1)增強了視頻會議功能,支持虛擬背景和反應效果;2)改進了遊戲性能,支持Metal3圖形API;3)增加了新的隱私和安全功能,如鎖定模式和更強的密碼保護。

See all articles