


ZipinputStream n'a pas réussi à décompresser le nom du fichier chinois? Comment définir correctement le jeu de caractères?
Dé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

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.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à 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)

Sujets chauds

Les cinq composants de base du système Linux sont: 1. Kernel, 2. Bibliothèque système, 3. Utilitaires système, 4. Interface utilisateur graphique, 5. Applications. Le noyau gère les ressources matérielles, la bibliothèque système fournit des fonctions précompilées, les utilitaires système sont utilisés pour la gestion du système, l'interaction GUI fournit une interaction visuelle et les applications utilisent ces composants pour implémenter des fonctions.

Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...

JDBC ...

Analyse du phénomène de fuite de mémoire des programmes Java sur différents processeurs d'architecture. Cet article discutera d'un cas où un programme Java présente différents comportements de mémoire sur les processeurs ARM et architecture x86 ...

À propos des microservices de SpringCloubaba Développement modulaire à l'aide de SpringCloud ...

Pourquoi la valeur de retour est-elle vide lors de l'utilisation de Redemplate pour la requête par lots? Lorsque vous utilisez Redemplate pour les opérations de requête par lots, vous pouvez rencontrer les résultats renvoyés ...

La solution d'optimisation pour les tâches de synchronisation Springboot dans un environnement multi-nœuds développe le ressort ...

Affichage et traitement des nombres en pourcentage en Java dans la programmation Java, la nécessité de traiter et d'afficher les nombres en pourcentage est très courante, par exemple, lors du traitement des tables Excel ...
