IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

[File & Zip] Caractères spéciaux dans les noms de fichiers


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2009
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 137
    Points : 157
    Points
    157
    Par défaut [File & Zip] Caractères spéciaux dans les noms de fichiers
    Bonjour,

    Dans mon programme, j'utilise l'API Zip pour zipper et dézipper des fichiers. Seulement après avoir pas mal avancé dans mon programme. Je me suis rendu que la fonction dézippe plantait sans raison apparente.

    Après moults recherche, je me suis rendu compte que c'est le fait d'avoir des caractères spéciaux dans les titres du type "é" qui faisait planter mon programme.

    En effet, lors de la transformation de mes fichiers zip, les caractères spéciaux sont transformés. Dans mon exemple "é" devient "+®".

    Deux pistes s'offrent à moi:

    -Soit bloquer dès le départ, les caractères spéciaux dans l'enregistrement du nom des images et des fichiers --> Moyen apprécié car il faudrait que je modifie les programmes que je ne connais pas car fourni par d'autres et pas mal complexe. Je me vois mal modifier un truc pour tout faire planter ensuite.

    -Transformer les caractères spéciaux en caractères normaux directement lors du passage normal-->zip puis retransformer les caractères spéciaux lors du passage zip-->normal.

    A moins que vous n'ayez d'autres solutions.

    Sinon si on prend cette deuxième solution, connaissez-vous un moyen simple de transformer le nom des fichiers?


    Par contre, je n'obtiens pas de problème si je dézippe un programme qui aura été au préalable zippé par mon programme (même avec caractères spéciaux).

    Ce problème des caractères spéciaux survient uniquement si j'ai zippé le fichier avec une source extérieur (7zip, windows,...).

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    Je ne connais pas les détails du format ZIP, mais je vois deux possibilités:
    - le format ZIP embarque une indication sur l'encodage utilisé pour les noms de fichiers. Dans ce cas, il faut que tu repères où c'est et t'en servir (La classe ZipFile possède un constructeur prenant en paramètre l'encodage il me semble).
    - le format ne contient aucun info sur l'encodage et dans ce cas, je vois difficilement comment tu peux t'en sortir.

    J'en profite pour te conseiller d'utiliser un encodage précis dans ton appli plutôt que de prendre celui par défaut, sinon, il se peut qu'un Zip créé avec ton appli sur une machine puisse ne pas êter dézippé par ton appli sur une autre machine (i.e: si ton appli n'est pas utilisé avec le même encodage).

    Une bonne pratique est de faire en sorte que l'encodage utilisé puisse être configuré (au lancement, via un fichier de conf, etc.) et qu'il utilise un encodage en dur par défaut.

    Comme ça, tu auras moins de surprises et ton appli restera flexible.

    Bon, je sais que j'ai pas forcément répondu à ta question, mais j'espère t'avoir un peu aidé

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2009
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 137
    Points : 157
    Points
    157
    Par défaut
    En lisant le topic suivant : http://www.developpez.net/forums/d21...-veux-accents/.

    Apparemment ce serait un bug du à l'utilisation de UTF-8.

    Une solution existerait-elle? Car franchement je ne vois pas trop la solution.

    Donc en gros, c'est mort pour avoir des fichiers avec accents?

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Le post datant de 2004, on aurait pu s'attendre que celait eut été corrigé.
    Quelle version de Java utilises-tu?

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2009
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 137
    Points : 157
    Points
    157
    Par défaut
    J'utilise la dernière version la jre 1.6.02.

    C'est vrai que c'est très surprenant que cela n'ait pas été corrigé.

    Mais il ne faut pas oublier qu'il n'y a aucun problème avec les accents SI le fichier Zip a été crée avec l'api ZIP. Par contre si le fichier a été créé autrement (windows, 7zip), là par contre cela ne fonctionne pas à cause des accents.

    Faudrait-il changer de méthode d'encodage ou renommer le fichier à chaque fois, et encore je vois mal comment renommer un fichier avec accent contenu dans un zip sachant que l'on ne peut pas le dézipper (vu que ça plante). Et à moins que c'est le contraire, il est impossible de modifier le nom d'un fichier contenu à l'intérieur d'un zip sans le dézipper.

    Raaaahh, ça me prend la tête.

    Edit : Personne ne peut m'aider? J'ai fait des recherches sur internet. Ceux qui parlent de ce problème ne propose pas de solution.

    Edit2: Apparemment, on ne peut pas régler le problème des accents avec l'api Zip Java, ce dernier n'étant pas fait pour dézipper ou zipper les fichiers en général (il est principalement utilisé pour les JAR qui sont limité au niveau des contraintes à utiliser le langage UTF-8).

    Une solution serait d'utiliser la bibliothèque Open Source TrueZip --> forums/d742617/java/general-java/apis/probleme-java-util-zip/

    Je vais m'y mettre et je vais regarder si cela fonctionne.
    Si vous avez des aides pour cette bibliothèque, n'hésitez pas



    Edit3 : La solution TrueZip fonctionne nickel, pour résoudre le problème des accents, il est conseillé d'utiliser cette bibliothèque dont voici le lien : https://truezip.dev.java.net/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Form] Caractères spéciaux dans les noms de champs
    Par Mistic100 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/06/2011, 08h16
  2. [Batch] Utiliser des caractères spéciaux dans les noms de variables?
    Par DeVit dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 09/10/2009, 11h33
  3. Caractère spéciaux dans les noms de bases?
    Par soad6938 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/08/2008, 14h17
  4. Caractère spéciaux dans un nom de fichier
    Par eddie5150 dans le forum Java ME
    Réponses: 6
    Dernier message: 26/06/2008, 14h52
  5. Caractères spéciaux dans les noms de variables POST
    Par guidav dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2007, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo