Fichier texte encodé en UTF_8?

J'écris un projet Java en envoyant un email avec pièce jointe.

Dans mon cas de test, j'ajoute quelques mots japonais «certaines Hiraganas et Katakanas» à mon fichier attachfichier.txt (que j'ai enregistré au format UTF-8).

Mais lorsque je m'envoie un e-mail de test après avoir ouvert le fichier testfile.txt attaché, tous les caractères japonais deviennent "????".

Alors je me demande simplement pourquoi cela se produit ...?

Je vous remercie

Allan

P.S. pour être plus précis, voici mon code. J'utilise mail.jar pour envoyer un courrier électronique.

Voici comment je récupère le fichier:

/**
 * Add an attachment to the Email.
 * @param filePath
 */
public void setFile(String filePath){

    attachment = new File(filePath);

}

et voici comment je joins le fichier à ma partie courrier électronique MIME.

/*Add attachment if an attachment is given.*/
    if(attachment != null){
    MimeBodyPart attachmentPart = new MimeBodyPart();
    attachmentPart.attachFile(attachment);
    multipart.addBodyPart(attachmentPart);
    }
0
Peux-tu être plus précis? Comment ouvrez-vous l'e-mail/fichier de test? Pouvez-vous poster des extraits de code?
ajouté l'auteur alexvetter, source

2 Réponses

Vous devez vous assurer que vous lisez et écrivez le fichier en utilisant le jeu de caractères approprié.

C'est à dire. donc pas, qui utiliserait le charset par défaut de la plateforme:

Reader reader = new FileReader("/testfile.txt");
// ...

Mais plus encore, utilisez InputStreamReader dans lequel vous spécifiez explicitement le jeu de caractères approprié:

Reader reader = new InputStreamReader(new FileInputStream("/testfile.txt"), "UTF-8");
// ...

De même, dans l'en-tête Content-Type de la pièce jointe à un courrier électronique, vous devez définir l'attribut charset et vous devez écrire la pièce jointe à l'aide de UTF-8. On ne peut pas donner plus de détails car l’API de messagerie que vous utilisez n’est pas claire. Alternativement, vous pouvez également vous contenter d’utiliser InputStream / OutputStream uniquement dans le but de diffuser le contenu en tant qu’octets purs sans affecter le jeu de caractères qu’ils représentent.


Update: you're using Javamail's MimeBodyPart without explicitly specifying the content type with the charset attribute. Now you're dependent on the mail client whether it treats the content as UTF-8 or not. Fix it as follows:

MimeBodyPart attachmentPart = new MimeBodyPart();
attachmentPart.attachFile(attachment);
attachmentPart.setHeader("Content-Type", "text/plain;charset=utf-8");
multipart.addBodyPart(attachmentPart);
6
ajouté
@mortensi: qui répond aux solutions de contournement (ne résout pas!) un problème totalement différent.
ajouté l'auteur BalusC, source
Cette réponse semble mieux fonctionner: stackoverflow.com/questions/4960556/& hellip;
ajouté l'auteur mortensi, source
J'ai essayé d'envoyer un fichier HTML (en pièce jointe) contenant des caractères scandinaves. Je me suis débattu pendant un certain temps et le lien ci-dessus a résolu l'affaire pour moi.
ajouté l'auteur mortensi, source

This thread seems to address setting the characters set correctly for mime body content (last comment).

0
ajouté