U moet ervoor zorgen dat u het bestand leest en schrijft met de juiste tekenset.
D.w.z. dus niet zo, die de standaard charset van het platform zou gebruiken:
Reader reader = new FileReader("/testfile.txt");
// ...
Maar meer nog, met behulp van InputStreamReader
waarin u expliciet de juiste charset opgeeft:
Reader reader = new InputStreamReader(new FileInputStream("/testfile.txt"), "UTF-8");
// ...
In de Content-Type
header van de e-mailbijlage moet je ook het charset attribuut instellen en moet je de bijlage wegschrijven met behulp van UTF-8. Verdere details kunnen niet worden gegeven omdat het onduidelijk is welke mail-API u gebruikt. Als alternatief kun je ook vasthouden aan het gebruik van InputStream
/ OutputStream
alleen omdat dat de inhoud zou streamen als pure bytes en dus geen invloed zou hebben op de tekenset die de bytes vertegenwoordigen.
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);