[原]解决qmail+iGenus webmail中文UTF-8乱码
Posted by bianbian on 2006-10-11 16:23
本文Tags: bug, iGenus, qmail, UTF-8, 编码
最近帮忙解决了一个问题(下面的全凭回忆输入,可能拼写上有问题):很古老的qmail+iGenus webmail系统,邮件若是UTF-8编码则显示乱码(缺省编码为GB2312)。主要解决办法就是利用iconv进行转码:
先看看有没有iconv模块,如果没有,需要重新编译php(如果iconv系统里没有装,得先安装iconv:去 http://www.gnu.org/software/libiconv/ 下载,./configure,make,make install),编译php的时候加上 –with-iconv
如果php是静态模块方式和apache绑定的,还得把apache重新编译一下:./configure –activate-module=src/modules/php4/libphp4.a,make clean,make,make install
然后打开iGenus include目录下的Fun_inc.php,找到Decode_mime()函数,在B和Q解码以后加上
- if(strtolower($Charset)=='utf-8') $Text = iconv('UTF-8', 'GB2312', $Text);
还有一个地方是正文的编码,打开include目录下的Prev_inc.php,找到Decode_text()函数,为了防止出现错误,复制一下Decode_text(),比如Decode_text_my(),并增加一个参数:$Charset。在函数内解析完数据准备写到文件之前转码:
- if(strtolower($Charset)=='utf-8') $buff = iconv('UTF-8', 'GB2312', $buff);
打开iGenus主目录下的prev.php,找到调用Decode_text()的两个地方,改成Decode_text_my(),并增加传递一个参数:$Charset
总结:我看的那个iGenus版本php写得很是糟糕,在那个上面改东西有一种想死的冲动……
标签: bug, iGenus, qmail, UTF-8, 编码遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道
October 17th, 2006 at 06:13:30
好像正文还是有点问题,下次搞定再改一下。
October 19th, 2007 at 02:18:38
谢谢,搞定了。
April 20th, 2009 at 01:46:22
楼主你好,我照着你说的把igenus GB2312 转utf-8 可还是不行,还是乱码,请是怎么回事?