Précédent   Forum des professionnels en informatique > Java > Général Java > APIs
APIs Forum sur les API standard et API complémentaires. Avant de poster -> FAQ Java, Les meilleures API Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2012, 10h17   #1
Invité de passage
 
el haj hassen
Inscription : février 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : el haj hassen

Informations forums :
Inscription : février 2011
Messages : 6
Points : 3
Points : 3
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.
elhaj_hassen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 11h02   #2
Membre Expert
 
Homme
Développeur java, access, sql server
Inscription : octobre 2005
Messages : 851
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 : 851
Points : 1 302
Points : 1 302
En spécifiant l'encodage (UTF-8, ...) ?
__________________
D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser.
First, make it work. Then, make it fast. Finally, make it user-friendly.
Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich.
Népomucène est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 11h50   #3
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 093
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 093
Points : 7 021
Points : 7 021
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.
thelvin est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2012, 13h21   #4
Invité de passage
 
el haj hassen
Inscription : février 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : el haj hassen

Informations forums :
Inscription : février 2011
Messages : 6
Points : 3
Points : 3
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.
elhaj_hassen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2012, 16h48   #5
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 093
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 093
Points : 7 021
Points : 7 021
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 ?
thelvin est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h04.


 
 
 
 
Partenaires

Hébergement Web