解决UTF-8编码VBB3附件下载名乱码
时间:2006-03-08 来源:cnscn2008
[From]http://www.cublog.cn/u/11905/showart.php?id=76964
使用UTF-8
[color="#0000ff"]编码
的VBB3论坛在下载中文附件时,在IE下会出现
[color="#ff0000"]乱码
,而在Firefox下正常,经过摸索,终于发现了解决方法,与诸君分享:
打开attachment.php文件,查找:
[color="#000000"]header[color="#007700"]('
[color="#0000ff"]Cache
-control:
[color="#0000ff"]max
-age=31536000'[color="#007700"]);
[color="#0000bb"]header[color="#007700"]([color="#dd0000"]'Expires: ' [color="#007700"]. [color="#0000bb"]gmdate[color="#007700"]([color="#dd0000"]"D, d M Y H:i:s"[color="#007700"], [color="#0000bb"]TIMENOW [color="#007700"]+ [color="#0000bb"]31536000[color="#007700"]) . [color="#dd0000"]' GMT'[color="#007700"]);
[color="#0000bb"]header[color="#007700"]([color="#dd0000"]'Last-Modified: ' [color="#007700"]. [color="#0000bb"]gmdate[color="#007700"]([color="#dd0000"]'D, d M Y H:i:s'[color="#007700"], [color="#0000bb"]$attachmentinfo[color="#007700"][[color="#dd0000"]'dateline'[color="#007700"]]) . [color="#dd0000"]' GMT'[color="#007700"]);
在其后添加:
[color="#000000"]if (!isset([color="#0000bb"]$isIE[color="#007700"]))
{
static [color="#0000bb"]$isIE[color="#007700"];
[color="#0000bb"]$isIE [color="#007700"]= [color="#0000bb"]iif[color="#007700"](is_
[color="#0000ff"]browser
[color="#007700"]([color="#dd0000"]'ie'[color="#007700"]), [color="#0000bb"]true[color="#007700"], [color="#0000bb"]false[color="#007700"]);
}
if ([color="#0000bb"]$isIE[color="#007700"])
{
[color="#0000bb"]$attachmentinfo[color="#007700"][[color="#0000bb"]filename[color="#007700"]] = [color="#0000bb"]iconv[color="#007700"]([color="#dd0000"]"UTF-8"[color="#007700"],[color="#dd0000"]"GBK"[color="#007700"],[color="#0000bb"]$attachmentinfo[color="#007700"][[color="#0000bb"]filename[color="#007700"]]);
}
若没有iconv库,但是Linux主机,可以将后半部分替换为:
[color="#000000"]if ([color="#0000bb"]$isIE[color="#007700"])
{
[color="#0000bb"]$cmd [color="#007700"]= [color="#dd0000"]"echo '$attachmentinfo[filename]' | iconv -f UTF-8 -t GBK"[color="#007700"];
[color="#0000bb"]$attachmentinfo[color="#007700"][[color="#0000bb"]filename[color="#007700"]] = [color="#0000bb"]shell_exec[color="#007700"]([color="#0000bb"]$cmd[color="#007700"]);
}
使用UTF-8
[color="#0000ff"]编码
的VBB3论坛在下载中文附件时,在IE下会出现
[color="#ff0000"]乱码
,而在Firefox下正常,经过摸索,终于发现了解决方法,与诸君分享:
打开attachment.php文件,查找:
[color="#000000"]header[color="#007700"]('
[color="#0000ff"]Cache
-control:
[color="#0000ff"]max
-age=31536000'[color="#007700"]);
[color="#0000bb"]header[color="#007700"]([color="#dd0000"]'Expires: ' [color="#007700"]. [color="#0000bb"]gmdate[color="#007700"]([color="#dd0000"]"D, d M Y H:i:s"[color="#007700"], [color="#0000bb"]TIMENOW [color="#007700"]+ [color="#0000bb"]31536000[color="#007700"]) . [color="#dd0000"]' GMT'[color="#007700"]);
[color="#0000bb"]header[color="#007700"]([color="#dd0000"]'Last-Modified: ' [color="#007700"]. [color="#0000bb"]gmdate[color="#007700"]([color="#dd0000"]'D, d M Y H:i:s'[color="#007700"], [color="#0000bb"]$attachmentinfo[color="#007700"][[color="#dd0000"]'dateline'[color="#007700"]]) . [color="#dd0000"]' GMT'[color="#007700"]);
在其后添加:
[color="#000000"]if (!isset([color="#0000bb"]$isIE[color="#007700"]))
{
static [color="#0000bb"]$isIE[color="#007700"];
[color="#0000bb"]$isIE [color="#007700"]= [color="#0000bb"]iif[color="#007700"](is_
[color="#0000ff"]browser
[color="#007700"]([color="#dd0000"]'ie'[color="#007700"]), [color="#0000bb"]true[color="#007700"], [color="#0000bb"]false[color="#007700"]);
}
if ([color="#0000bb"]$isIE[color="#007700"])
{
[color="#0000bb"]$attachmentinfo[color="#007700"][[color="#0000bb"]filename[color="#007700"]] = [color="#0000bb"]iconv[color="#007700"]([color="#dd0000"]"UTF-8"[color="#007700"],[color="#dd0000"]"GBK"[color="#007700"],[color="#0000bb"]$attachmentinfo[color="#007700"][[color="#0000bb"]filename[color="#007700"]]);
}
若没有iconv库,但是Linux主机,可以将后半部分替换为:
[color="#000000"]if ([color="#0000bb"]$isIE[color="#007700"])
{
[color="#0000bb"]$cmd [color="#007700"]= [color="#dd0000"]"echo '$attachmentinfo[filename]' | iconv -f UTF-8 -t GBK"[color="#007700"];
[color="#0000bb"]$attachmentinfo[color="#007700"][[color="#0000bb"]filename[color="#007700"]] = [color="#0000bb"]shell_exec[color="#007700"]([color="#0000bb"]$cmd[color="#007700"]);
}
相关阅读 更多 +