


ZipInputStream failed to decompress Chinese file name? How to set the character set correctly?
Apr 19, 2025 pm 04:33 PMZipInputStream decompression of Chinese file names and solutions
Many developers often encounter character encoding problems when using ZipInputStream
to decompress Zip compressed packages containing Chinese file names or folder names, which leads to decompression failures and prompts errors like "malformed input off : 1, length : 1". This article will analyze this problem in depth and provide effective solutions.
The root of the problem is that the character set specified in the ZipInputStream
constructor is not used to decompress the file name encoding inside the file, but to read the central directory information of the Zip file itself. The encoding of the central directory depends on the environment in which the compressed package is created and the operating system. Windows systems usually use GB2312 or GBK encoding, while macOS and Linux systems usually use UTF-8 encoding.
Therefore, if a Zip compression package is created under Windows, its central directory is likely to be encoded using GBK. Even if the UTF-8 encoding is specified in the code, ZipInputStream
still fails to parse the GBK-encoded central directory correctly, resulting in decompression failure.
Solution:
For Zip packages created by Windows systems, it is recommended to use GBK encoding to read the central directory:
FileInputStream input = new FileInputStream(targetPath); ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input), Charset.forName("GBK"));
Since GBK encoding is compatible with GB2312, this method also applies to the central directory of GB2312 encoding.
Cross-platform solutions:
To write more robust cross-platform compatible code, the Apache Commons Compress library is recommended. This library provides more powerful compression/decompression functions, which can automatically handle Zip compression packages of different encodings, effectively avoiding decompression failures due to character set differences. It can automatically detect and process central directory information of different codes, simplify the development process, and improve the reliability of the code.
The above is the detailed content of ZipInputStream failed to decompress Chinese file name? How to set the character set correctly?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Without BootCamp, installing Windows on Mac is feasible and works for different chips and needs. 1. First check compatibility: The M1/M2 chip Mac cannot use BootCamp, it is recommended to use virtualization tools; the Intel chip Mac can manually create a boot USB disk and install it in partition. 2. Recommended to use virtual machines (VMs) for M1 and above chip users: Windows ISO files, virtualization software (such as ParallelsDesktop or UTM), at least 64GB of free space, and reasonably allocate resources. 3. IntelMac users can manually install it by booting the USB drive: USB drive, WindowsISO, DiskU is required

InstallthedesiredlanguagepackviaSettings→Time&Language→Language®ion,ensuring"SetasmyWindowsdisplaylanguage"isselected.2.Changethesystemdisplaylanguageinthesamemenuandrestart.3.OpenControlPanel→Region→Administrativetab,click"

cronisusedforpreciseschedulingonalways-onsystems,whileanacronensuresperiodictasksrunonsystemsthataren'tcontinuouslypowered,suchaslaptops;1.Usecronforexacttiming(e.g.,3AMdaily)viacrontab-ewithsyntaxMINHOURDOMMONDOWCOMMAND;2.Useanacronfordaily,weekly,o

DownloadtheWindowsISOfromMicrosoft’sofficialsite.2.CreateabootableUSBusingMediaCreationToolorRufuswithaUSBdriveofatleast8GB.3.BootfromtheUSBbyaccessingthebootmenuoradjustingBIOS/UEFIsettings.4.InstallWindowsbyselectingcustominstallation,choosingtheco

ForIntel-basedMacs,useBootCampAssistanttocreateadual-bootsystemwithWindowsbypreparingaUSBdrive,downloadingaWindowsISO,partitioningthedisk,andinstallingWindowsalongsidemacOSwithsupportdrivers.2.ForAppleSiliconMacs(M1/M2/M3),usevirtualizationsoftwareli

OpenSystemsettings (macosventuraorlater) ORSYSTADPREFERENCES (OlderVersions) FromtheApplemenu.2.Gotogeneral> SoftwareUPDADDADDADDADTSORICTLYOPENTWAREUPENSFWARUPFAREUPFADTEINSYPFERENCES.3.CHECKENAVALLEUPDATES: IFANPDATESLISTED, Clickupdatenow; Fora

ResettheMicrosoftStoreviaSettingsbygoingtoApps>Installedapps,selectingMicrosoftStore,clickingAdvancedoptions,thenRepairandResetifneeded.2.Ifthatfails,re-registertheStoreusingPowerShellasadminwiththecommand:Get-AppXPackage-NameMicrosoft.WindowsStor

Create a website directory and add a test page; 2. Create a virtual host configuration file under /etc/apache2/sites-available/, set ServerName, DocumentRoot, etc.; 3. Use a2ensite to enable the site, disable the default site, and reload Apache after testing the configuration; 4. Add a domain name in /etc/hosts during local testing and point to 127.0.0.1; after completing the above steps, visit example.com to see the website content, and the virtual host configuration is successful.
