Codificarea fișierului text în UTF_8?

Scriu un proiect Java care trimite e-mail cu atașament.

În cazul meu de testare, adaug câteva cuvinte japoneze "unele Hiraganas și Katakanas" la testul meu atașat.txt (pe care l-am salvat în codarea UTF-8).

Dar când îmi trimit un e-mail de test, după ce am deschis fișierul testfile.txt atașat, fiecare Chars japonez devine "????".

Deci mă întreb doar de ce se întâmplă asta ...?

Mulțumesc

Allan

P.S. pentru a fi mai specific, aici este codul meu. Eu folosesc mail.jar pentru a trimite e-mail.

Iată cum obțin dosarul:

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

    attachment = new File(filePath);

}

și mai jos este modul în care atașați fișierul în partea mea de e-mail MIME.

/*Add attachment if an attachment is given.*/
    if(attachment != null){
    MimeBodyPart attachmentPart = new MimeBodyPart();
    attachmentPart.attachFile(attachment);
    multipart.addBodyPart(attachmentPart);
    }
0
Puteți fi mai specific? Cum deschideți e-mailul/testfile? Poți să trimiți niște fragmente de cod?
adăugat autor alexvetter, sursa

2 răspunsuri

Trebuie să vă asigurați că citiți și scrieți fișierul utilizând setul de caractere corespunzător.

I.E. deci nu așa, care ar folosi caracterele implicite ale platformei:

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

Dar mai mult, folosind InputStreamReader în care specificați explicit setul de caractere corespunzător:

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

De asemenea, în antetul Type-Content al atașamentului de e-mail trebuie să setați atributul charset și trebuie să scrieți atașamentul utilizând UTF-8. Nu pot fi furnizate detalii suplimentare deoarece nu este clar ce API e-mail pe care îl utilizați. În mod alternativ, puteți utiliza codul InputStream / OutputStream numai ca și cum ar fi fluxul conținutului ca octeți puri și astfel nu ar afecta setul de caractere reprezentat de octeți.


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
adăugat
@mortensi: răspunsul care rezolvă (nu rezolvă!) o problemă complet diferită.
adăugat autor BalusC, sursa
Acest răspuns pare să funcționeze mai bine: stackoverflow.com/întrebări/4960556/& hellip;
adăugat autor mortensi, sursa
Am încercat să trimit un fișier HTML (ca atașament) cu unele caractere scandinave înăuntru. M-am luptat de ceva timp cu asta, iar legătura de mai sus mi-a rezolvat cazul.
adăugat autor mortensi, sursa

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

0
adăugat