


ZipinputStream n'a pas réussi à décompresser le nom du fichier chinois? Comment définir correctement le jeu de caractères?
Apr 19, 2025 pm 04:33 PMDécompression zipinputstream des noms et solutions de fichiers chinois
De nombreux développeurs rencontrent souvent des problèmes de codage de caractères lors de l'utilisation ZipInputStream
pour décompresser les packages compressés Zip contenant des noms de fichiers chinois ou des noms de dossiers, ce qui conduit à des défaillances de décompression et invite des erreurs comme "l'entrée mal formée: 1, longueur: 1". Cet article analysera ce problème en profondeur et fournira des solutions efficaces.
La racine du problème est que le jeu de caractères spécifié dans le constructeur ZipInputStream
n'est pas utilisé pour décompresser le nom de fichier codage à l'intérieur du fichier, mais pour lire les informations du répertoire central du fichier zip lui-même. Le codage du répertoire central dépend de l'environnement dans lequel le package compressé est créé et du système d'exploitation. Les systèmes Windows utilisent généralement le codage GB2312 ou GBK, tandis que les systèmes MacOS et Linux utilisent généralement le codage UTF-8.
Par conséquent, si un package de compression zip est créé sous Windows, son répertoire central est susceptible d'être codé à l'aide de GBK. Même si le codage UTF-8 est spécifié dans le code, ZipInputStream
ne parvient toujours pas à analyser correctement le répertoire central codé par GBK, entra?nant une défaillance de décompression.
Solution:
Pour les packages ZIP créés par Windows Systems, il est recommandé d'utiliser le codage GBK pour lire le répertoire central:
FileInputStream Input = new FileInputStream (TargetPath); ZipinputStream zipinputStream = new ZipinputStream (new BufferedInputStream (entrée), charset.forname ("gbk"));
étant donné que le codage GBK est compatible avec GB2312, cette méthode s'applique également au répertoire central du codage GB2312.
Solutions multiplateformes:
Pour écrire un code compatible multiplateforme plus robuste, la bibliothèque Apache Commons Compress est recommandée. Cette bibliothèque offre des fonctions de compression / décompression plus puissantes, qui peuvent gérer automatiquement les packages de compression ZIP de différents codages, évitant efficacement les défaillances de décompression en raison des différences de jeu de caractères. Il peut détecter et traiter automatiquement les informations de répertoire central de différents codes, simplifier le processus de développement et améliorer la fiabilité du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Linux convient à l'ancien matériel, a une haute sécurité et est personnalisable, mais a une compatibilité logicielle faible; Le logiciel Windows est riche et facile à utiliser, mais a une utilisation élevée des ressources. 1. En termes de performances, Linux est léger et efficace, adapté aux anciens appareils; Windows a des exigences matérielles élevées. 2. En termes de logiciels, Windows a une compatibilité plus large, en particulier les outils et les jeux professionnels; Linux doit utiliser des outils pour exécuter certains logiciels. 3. En termes de sécurité, la gestion des autorisations Linux est plus stricte et les mises à jour sont pratiques; Bien que Windows soit protégé, il est toujours vulnérable aux attaques. 4. En termes de difficulté d'utilisation, la courbe d'apprentissage Linux est raide; L'opération Windows est intuitive. Choisissez en fonction des exigences: choisissez Linux avec les performances et la sécurité, et choisissez Windows avec compatibilité et facilité d'utilisation.

Choosepop! _OS, Ubuntu, Nobaralinux, OrarchlinuxForoptimalgaming Performance withinmimaloverhead.2.Installofficialnvidiapropriétarydriversfornvidiagpus, assurept-t-to-datememesaandkernerserforamdindelgpus.3,EBablePheperformAlect

Hyper-VcanbeenableDOnwindowspro, Enterprise, OreducationEditionsBymeetingSystemRequirements incluant64-bitcpuwithslat, vmMonitorModeExtension, bios / uefiVirtualizationyabled, andatleast4gbram.20

Checkifthetouchpadisdisabledbyusingthefunctionkey(Fn F6/F9/F12),adedicatedtogglebutton,orensuringit’sturnedoninSettings>Devices>Touchpad,andunplugexternalmice.2.UpdateorreinstallthetouchpaddriverviaDeviceManagerbyselectingUpdatedriverorUninstal

ClicktheDeskTopandSelect "DisplaySettings" toOpenTheDisplayOptions.2

Installer CERTBOT et son plug-in Apache; 2. Exécutez CERTBOT pour obtenir le certificat et configurer le nom de domaine; 3. Configurer éventuellement la redirection automatique de HTTP vers HTTPS; 4. Configurer le renouvellement automatique et passer le test à sec; 5. Vérifiez l'installation et assurez la configuration normale de rechargement d'Apache. Une fois le certificat déployé avec succès, le renouvellement sera automatiquement géré. Une fois l'ensemble du processus terminé, l'accès HTTPS sécurisé peut être atteint.

Onwindows, téléchargementthego.msiinstallerfromtheofficialsite, runittoinstallgoandsetpathautomatiquement, therevrifywithoversionincommandpromptorpowershell.2.onmacos, soit usetheofficial.pkginstallerfromgo.dev / dl / orinstallviahomebrewwithbrewinstallgogo, qui / orinstallviahomebrewwithbrewinstallgogogogo, qui, OrinstallviahomomeBrewwithBrewingo

Keepaliveon permet des connexions persistantes; 2.MaxkeepaliveRequests100 définit le nombre maximum de demandes par connexion; 3.EnkeIveVeTimeOut5 Définit le délai d'attente pour les demandes ultérieures, redémarrez Apache après la configuration et utilisez des outils de développeur Curl ou Browser pour vérifier si Keepalive est efficace pour optimiser les performances du serveur.
