subject = new String(subject.getBytes("ISO8859_1"), "gb2312");
subject = MimeUtility.decodeText(subject);// base64解码
System.out.println(subject);
结果是:申银万国_新股定价_300158(N振东)_娄圣睿,罗 �_**_预计上市首日股价39-44元。
正确中文名: 申银万国_新股定价_300158(N振东)_娄圣睿,罗鶄_**_预计上市首日股价39-44元。
该怎么解码才能正确呢?
6 个解决方案
#1
转化成GBK
#2
为啥我转码后是这样的呢
yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql7qOjrMLe+YJfo6qjql/UpLzGyc/K
0MrXyNW5ybzbMzktNDTUqqGj
yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql7qOjrMLe+YJfo6qjql/UpLzGyc/K
0MrXyNW5ybzbMzktNDTUqqGj
#3
这句其实相当于没用
subject = new String(subject.getBytes("ISO8859_1"), "gb2312");
结果仍是原文 因为源码没超出ISO8859_1范围
真正解码的是MimeUtility.decodeText方法,那原因基本上就是源码串,本来是怎么编码的呢
subject = new String(subject.getBytes("ISO8859_1"), "gb2312");
结果仍是原文 因为源码没超出ISO8859_1范围
真正解码的是MimeUtility.decodeText方法,那原因基本上就是源码串,本来是怎么编码的呢
#4
直接转就可以了:
MimeUtility.decodeText 内部都帮你做好了。
import java.io.UnsupportedEncodingException;
import javax.mail.internet.MimeUtility;
public class Test {
public static void main(String[] args) throws UnsupportedEncodingException {
String subject = "=?gb2312?B?yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql7qOjrMLe+YJf?= =?gb2312?B?o6qjql/UpLzGyc/K0MrXyNW5ybzbMzktNDTUqqGj?=";
System.out.println(MimeUtility.decodeText(subject));
}
}
MimeUtility.decodeText 内部都帮你做好了。
#5
申银万国_新股定价_300158(N振东)_娄圣睿,罗
鶄_**_预计上市首日股价39-44元。
你的 subject 在编码时就有问题了,设定的字符集不正确!
鶄 不是 GB2312 中的汉字!
应该用这个方法进行编码:
得到的 subject 为:
=?gbk?b?yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql?= =?gbk?b?7qOjrMLe+YJfo6qjql/UpLzGyc/K0MrXyNW5ybzbMzktNDTUqqGjIA==?=
你的 subject 在编码时就有问题了,设定的字符集不正确!
鶄 不是 GB2312 中的汉字!
应该用这个方法进行编码:
String subject = "申银万国_新股定价_300158(N振东)_娄圣睿,罗鶄_**_预计上市首日股价39-44元。 ";
System.out.println(MimeUtility.encodeText(subject, "gbk", "b"));
得到的 subject 为:
=?gbk?b?yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql?= =?gbk?b?7qOjrMLe+YJfo6qjql/UpLzGyc/K0MrXyNW5ybzbMzktNDTUqqGjIA==?=
#6
gb2312没有哪个字符,你用GBK,或者GB18030就可以了。
#1
转化成GBK
#2
为啥我转码后是这样的呢
yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql7qOjrMLe+YJfo6qjql/UpLzGyc/K
0MrXyNW5ybzbMzktNDTUqqGj
yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql7qOjrMLe+YJfo6qjql/UpLzGyc/K
0MrXyNW5ybzbMzktNDTUqqGj
#3
这句其实相当于没用
subject = new String(subject.getBytes("ISO8859_1"), "gb2312");
结果仍是原文 因为源码没超出ISO8859_1范围
真正解码的是MimeUtility.decodeText方法,那原因基本上就是源码串,本来是怎么编码的呢
subject = new String(subject.getBytes("ISO8859_1"), "gb2312");
结果仍是原文 因为源码没超出ISO8859_1范围
真正解码的是MimeUtility.decodeText方法,那原因基本上就是源码串,本来是怎么编码的呢
#4
直接转就可以了:
MimeUtility.decodeText 内部都帮你做好了。
import java.io.UnsupportedEncodingException;
import javax.mail.internet.MimeUtility;
public class Test {
public static void main(String[] args) throws UnsupportedEncodingException {
String subject = "=?gb2312?B?yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql7qOjrMLe+YJf?= =?gb2312?B?o6qjql/UpLzGyc/K0MrXyNW5ybzbMzktNDTUqqGj?=";
System.out.println(MimeUtility.decodeText(subject));
}
}
MimeUtility.decodeText 内部都帮你做好了。
#5
申银万国_新股定价_300158(N振东)_娄圣睿,罗
鶄_**_预计上市首日股价39-44元。
你的 subject 在编码时就有问题了,设定的字符集不正确!
鶄 不是 GB2312 中的汉字!
应该用这个方法进行编码:
得到的 subject 为:
=?gbk?b?yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql?= =?gbk?b?7qOjrMLe+YJfo6qjql/UpLzGyc/K0MrXyNW5ybzbMzktNDTUqqGjIA==?=
你的 subject 在编码时就有问题了,设定的字符集不正确!
鶄 不是 GB2312 中的汉字!
应该用这个方法进行编码:
String subject = "申银万国_新股定价_300158(N振东)_娄圣睿,罗鶄_**_预计上市首日股价39-44元。 ";
System.out.println(MimeUtility.encodeText(subject, "gbk", "b"));
得到的 subject 为:
=?gbk?b?yerS+M3yufpf0MK5ybaovNtfMzAwMTU4KE7V8barKV/Cpsql?= =?gbk?b?7qOjrMLe+YJfo6qjql/UpLzGyc/K0MrXyNW5ybzbMzktNDTUqqGjIA==?=
#6
gb2312没有哪个字符,你用GBK,或者GB18030就可以了。