Bonjour,
J'ai un programme qui permet de dézipper des fichiers sur le serveur pour faire tout un tas de manipulations (copie, renommage etc...), et qui fonctionne bien, excepté pour une chose : Si l'une des entrées dans l'archive contient un accent aigu dans son nom, cet accent est remplacé par une virgule à la sortie de zip_read(), et donc ça pose des problèmes pour ce que je veux faire ensuite car il ne reconnaît pas le nom du fichier.
exemple: un fichier "procédure.doc" devient "proc,dure.doc"
J'ai remonté l'erreur jusqu'à zip_read()
J'ai testé en compressant avec 7Zip, avec l'utilitaire de zip intégré de Windows XP (SP3), et avec Winrar, mais aucune amélioration.
Une idée ?
Merci d'avance,
[MISE a JOUR]Pas de réponse à mon message, mais je documente au cas où.
J'ai testé avec la fonction extractTo de ZipArchive() (au lieu d'utiliser mon gestionnaire perso basé sur les vieilles fonctions zip), et même résultat : Je récupère un fichier "proc,dure.doc" au lieu de "procédure.doc"
Mais ce n'est pas simplement la chaîne de caractère renvoyée par zip_read() ou zip_entry_name(), comme je le croyais, c'est vraiment le fichier qui est renommé en "proc,dure" lors du dézippage.
Pour m'en assurer, j'ai ouvert mon fichier directement sur le serveur en utilisant TSE (au fait, serveur windows 2003, je ne veux rien entendre... ), et dans l'archive, le fichier porte bien son nom de départ.
Donc ce n'est pas le transfert FTP qui altère quelque chose, c'est bel et bien le dézippage avec PHP qui me pose souci...
Au secours !
[MISE A JOUR 2]
J'ai vérifié avec mb_detect_encoding, et apparemment, pour les entrées comportant des accents il ne détecte pas l'encodage:
Me renvoie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 while ($entree = zip_read($zip)) { print mb_detect_encoding( zip_entry_name($entree))." :". zip_entry_name($entree);
Bizarre.ASCII :Classeur1.csv
:proc‚dure d'ajout des donn‚es.doc
ASCII :test.pdf
[MISE A JOUR 3]
Apparemment, le flux renvoyé par zip_read() est bien de l'ASCII.
En revanche, impossible de détecter l'encodage de la chaîne retournée par zip_entry_name() si la chaîne passée en paramètre comporte des accents...
Partager