最近遇到一个很奇怪的问题,折腾我好久了
公司有自己的开发平台 发邮件是用Javamail写的
我在用公司封装的发邮件的方法 发送邮件过程中
陈玘的“玘”字不能正常显示,一直显示的是"陈?"
在正文和标题中都不能正常显示
所以想问问大家 这是什么原因,如果说公司封装的代码有问题 为什么其他的字都能正常就这一个字不正常,
数据库的字符集也没问题 是oracle ZHS16GBK
邮件发送编码问题,之前用gb2312测试了一下,发现确实变成了?号,现在改成UTF-8就能正常显示,现在项目中一般都是UTF-8编码,确实可以减少一些不必要的乱码,相对来说UTF-8库是比较全的
[code="java"]
private String xMailContentMimeType = "text/html; charset=utf-8";
mBodyContent.setContent(xMailContent, xMailContentMimeType);
[/code]
检查一下发送时使用的字符集吧。最好是使用utf-8
如果有的是汉字有的是乱码,就很有可能是字符集的问题,通常gb2312的汉字集合要多些(utf-8,gbk,gb2312三种字符集的汉字数目是不同的),也有可能是数据库中本身存的有问题,看看两个字中间是否有隐含字符
个人感觉是字符集的问题,因为陈杞的那个Qi用很多输入法都打不出来,是个不常用的生辟字
邮件发送编码问题,之前用gb2312测试了一下,发现确实变成了?号,现在改成UTF-8就能正常显示
code="java"]
private String xMailContentMimeType = "text/html; charset=utf-8";[
mBodyContent.setContent(xMailContent, xMailContentMimeType);
[/code]
是不是在linux环境下?
字符集的问题吧,GBK好像就没有囧这个字,最好还是用UTF-8吧
GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个字符。
GB 2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。
对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。
用的是Apache的org.apache.commons.mail.SimpleEmail;
SimpleEmail email = new SimpleEmail();
email.setCharset("UTF-8");
就行啦