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

API standards et tierces Java Discussion :

javax.mail.Part.getFileName() et nom de fichier en langue arabe


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut javax.mail.Part.getFileName() et nom de fichier en langue arabe
    Bonjour

    j'ai travaillé avec Java Mail 1.2 et j'ai eu un problème quand le nom de fichier en attachement avec mail était en langue arabe.

    Exemple:

    le nom de fichier:جدول إستلام فيتامينات لفائدة جدّافي النخبة الوطنية.docx

    System.out.println("FILE NAME " +part.getFileName());

    retourne:

    FILE NAME =?windows-1256?B?zM/m4SDF08rhx+Mg3e3Kx+Pt5MfKIOHdx8bPySDMz/jH3e0gx+Hkzg==?= =?windows-1256?B?yMkgx+Hm2OTtyS5kb2N4?=

    Merci beaucoup pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    En spécifiant l'encodage (UTF-8, ...) ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En lisant la JavaDoc de MimeBodyPart.getFileName(), on comprend un peu mieux ce qu'il en est.

    En gros, il est clair dans ton exemple que le nom de fichier est encodé.
    En principe, le protocole mail interdit d'encoder les fichiers comme ça, mais en réalité tout le monde le fait quand même, parce que c'est la seule manière d'insérer des caractères non-ASCII. (Sans ça, pas d'accent, pas d'arabe dans les noms de fichier.)

    Par défaut, JavaMail respecte le protocole mail, donc il ne décode pas et tu obtiens ça. Il faut pousser JavaMail à décoder les noms de fichiers.
    Pour ça, deux possibilités :

    #1 - Celle indiquée dans la JavaDoc :
    Régler la propriété système mail.mime.decodefilename à true. Par défaut elle est à false.

    #2 - Appeler toi-même le décodage.
    Après avoir obtenu le nom du fichier, le passer dans MimeUtility.decodeText().


    Citation Envoyé par Népomucène Voir le message
    En spécifiant l'encodage (UTF-8, ...) ?
    Nan ce genre de choses sont censées être gérées automatiquement, et donc il n'y a pas moyen de spécifier un encodage soi-même. Et de plus, le charset utilisé ici est windows-1256, pas utf-8.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre régulier
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut MERCI DE VOTRE AIDE
    j'ai réussi à trouver cette solution:

    String decoded = MimeUtility.decodeText(part.getFileName());
    System.out.println(Normalizer.normalize(decoded, Normalizer.Form.NFC));


    Merci encore une fois.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je suis curieux... Pourquoi faire une normalisation NFC ?

    C'est sans doute pas une mauvaise idée sur des échanges de texte arbitraire, comme un nom de fichier envoyé par mail. Mais je me demande d'où t'est venue cette idée.

    Surtout que dans l'exemple donné, la normalisation ne change rien du tout. Ça arrive souvent, en arabe, qu'une normalisation NFC fasse une différence ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Capture nom de fichier pour envoi de mail avec PJ
    Par Graineur dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 15/03/2011, 13h45
  2. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  3. Réponses: 2
    Dernier message: 29/01/2004, 11h05
  4. Réponses: 4
    Dernier message: 10/10/2003, 18h04
  5. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21

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