【发布时间】:2020-02-25 02:46:01
【问题描述】:
所以基本上我正在尝试发送带有日文字符的电子邮件,例如“????????????”然后我得到“???”我应该怎么做才能对此进行编码?我查看了一堆解决方案,但没有一个能帮助我解决这个问题。
这是我一直在尝试进行编码的方法:
public String encoding(String str) throws UnsupportedEncodingException{
String Encoding = "Shift_JIS";
return this.changeCharset(str, Encoding);
}
public String changeCharset(String str, String newCharset) throws UnsupportedEncodingException {
if (str != null) {
byte[] jis = str.getBytes("Shift_JIS");
return new String(bs, newCharset);
}
return null;
}
【问题讨论】:
-
有点类似于check this。字符集可能有问题。
-
您如何发送电子邮件?纯文本还是 HTML?您是否在电子邮件中指定字符编码?您的问题可能是您的电子邮件客户端不知道要使用什么字符集。您很可能不需要使用 Shift_JIS,几乎可以肯定使用 UTF-8 或 UTF-16。
-
另外,您的 changeCharset 似乎没有意义。您似乎正在尝试将输入字符串中的字节读取为 Shift_JIS,然后在输出上将它们转换为 Shift_JIS。唯一需要指定编码的地方是在将字节附加到电子邮件时。那时你会调用
getBytes("Shift_JIS")并将字节数组结果附加到电子邮件中。 -
我正在使用它来设置要发送的 html 部分 MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent(encoding(mailMessage.getMessageHTML()), "text/html");杰米
-
我已经检查了链接Viroj,但还是不行
标签: java jakarta-mail encode