我在使用 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");
看起来 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
, 这是一个 '?'字符,并且意味着文本在更早的时候就被损坏了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)