技术 · 2013 年 5 月 1 日

邮件乱码、罗马数字消失——一切都是编码问题

之前收到的一个订单邮件里,产品表示代数的罗马数字在outlook中不显示……经过简单排查,原来网站程序对邮件正文进行了重新编码:

mb_convert_encoding($str, 'JIS', 'UTF-8');
//将UTF-8编码内容的正文重新编码成JIS日文编码

将JIS修改成UTF-8之后,在网站上看正常了,罗马数字可以正常显示,但是收到的邮件是乱码。

后来查看了邮件原文信息,才发现,编码不对。
QQ截图20130501213428
全部改成UTF-8就Ok了。
QQ截图20130501212211

原来还怀疑是不是邮件服务器配置的问题,后来想着是否网站程序的设置问题,最后总算找到了网站的邮件发送php文件,将里面的To、From、Subject、Body都改成了UTF-8,OK了。