2

我在使用 Java 代码发送的邮件中显示土耳其语字符时遇到问题。这些字符在邮件中显示为问号 (?)。

Message msg = new MimeMessage(mailSession);
msg.setHeader("Content-Encoding","ISO-8859-9");
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject,"iso-8859-9");
msg.setSentDate(new Date());
msg.setContent(messageText, "text/html;ISO-8859-9");
4

3 回答 3

1

看起来 ISO-8859-9 应该能够处理您的土耳其字母。文本是否有可能在其他地方使用错误的字符编码进行解码?例如,如果电子邮件的正文包含来自 Web 请求、另一封电子邮件或文件的文本,则可能此时指定了错误的解码器。

一种检查方法是打印 Unicode 代码点的数值String

for (int idx = 0; idx < str.length(); ++idx) {
  System.out.println(Integer.toHexString(str.charAt(idx)));
}

如果您看到fffd,那是“替换字符”,意味着String创建时使用的解码无法将字节(或字节序列)映射到字符。如果你看到3f,那是一个'?字符,并且意味着文本在更早的时候被破坏了。

于 2009-04-21T16:26:23.723 回答
0

使用 UTF-8,这里有一个很好的编码概述: http: //www.joelonsoftware.com/articles/Unicode.html

于 2009-05-13T11:11:06.400 回答
-1

You can find the solution here:

http://www.serkankonakci.com/Project/wordpress/2009/02/04/java-mail-ile-mail-gonderme-ornegi/

even with this code, you can send with attachment or single mail in Turkish. And you can find other Turkish charset problem, just search there.

于 2009-05-08T07:26:19.200 回答