【问题标题】:How to encode Japanese characters javamail如何编码日文字符javamail
【发布时间】: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


【解决方案1】:

你把事情搞得太复杂了……

首先,确保使用正确的 Unicode 字符在正确的 Java String 对象中包含日文文本。

然后,使用this method设置body部分的内容:

htmlPart.setText(japaneseString, "Shift_JIS", "html");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 2011-12-03
    • 2016-07-03
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多