码迷,mamicode.com
首页 > Web开发 > 详细

使用mod_encoding使apache支持中文附件名

时间:2016-05-27 15:03:27      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:mod_encoding   中文附件   apache   中文乱码   

     本地测试环境为apache2.2.31,PHP5.3.27,操作系统为RHEL6.4x86_64,使用mod_encoding工具使apache支持中文附件名,比如http://www.example.com/合同.rar

1.先修改操作系统的语言环境,使linux本地支持中文,可以查看中文文件名

修改/etc/sysconfig/i18n文件
将LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
修改为

LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"

2.源码编译mod_encoding

下载安装文件和补丁

wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
wget 
 tar xf mod_encoding-20021209.tar.gz 
 cd mod_encoding-20021209

将补丁文件mod_encoding.c.apache2.20040616覆盖本地目录中的mod_encoding.c

 cp ../mod_encoding.c.apache2.20040616 ./mod_encoding.c

直接在软件目录mod_encoding-20021209下载第二个补丁文件

 wget http://www.aconus.com/~oyaji/faq/mod_encoding.c-apache2.2-20060520.patch

应用补丁文件

patch -p0 <mod_encoding.c-apache2.2-20060520.patch

编译安装前需要首先安装iconv_hook,否则会报错

进入lib目录

cd lib/
#pwd
/server/tools/mod_encoding-20021209/lib
 ./configure --prefix=/usr
 make
 make install
 ldconfig

编译安装mod_encoding,我的apache目录为/application/apache,需要安装apache时加入apxs模块,编译时无需make install

cd ..
 ./configure --with-apxs=/application/apache/bin/apxs --with-iconv-hook=/usr/include
 make
  gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -Llib -liconv_hook

将生成的mod_encoding.so模块复制到apache的modules目录

cp mod_encoding.so /application/apache/modules/



3.修改apache配置文件

需要headers_module支持,查看apache已经编译的模块

# apachectl -l|grep mod_head
  mod_headers.c

我的apache本身已经带了,就不需要添加此模块了,如果没有,需要在httpd.conf中加入下面一行,前提是模块文件存在

LoadModule headers_module modules/mod_headers.so

修改apache主配置文件httpd.conf,加入如下内容

LoadModule encoding_module modules/mod_encoding.so

Header add MS-Author-Via "DAV"
EncodingEngine on
NormalizeUsername on
SetServerEncoding GBK
DefaultClientEncoding UTF-8 GBK GB2312
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312

第2-8行可以放到配置文件末尾

检查语法,并重启apache,测试中文附件能否正常下载,相关附件也可以直接从本文中下载,已经打包

使用mod_encoding使apache支持中文附件名

标签:mod_encoding   中文附件   apache   中文乱码   

原文地址:http://francis198.blog.51cto.com/720670/1783729

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!