使用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,测试中文附件能否正常下载,相关附件也可以直接从本文中下载,已经打包

时间: 2024-11-06 11:35:08

使用mod_encoding使apache支持中文附件名的相关文章

apache支持中文域名绑定,apache支持中文域名绑定,教你怎样让apache支持中文域名绑定

摘要:apache支持中文域名绑定,apache支持中文域名绑定,教你怎样让apache支持中文域名绑定,根据本人实际经验,叫你如何让apache支持中文域名绑定,绝对管用的让apache支持中文域名绑定的方法.在百度搜索:中文域名在线转码然后在线转中文域名为punyco 我从事php开发网站已经有5年之久以前遇到一个同事问我怎么样才能将apache绑定中文域名,支付中文域名访问而我以在实际项目获得并总结的经验告诉他,以下是方法: 根据本人实际经验,叫你如何让apache支持中文域名绑定,绝对管

用commons-email,javax.mail发送邮件,中文附件名乱码。

import java.io.UnsupportedEncodingException; import javax.mail.internet.MimeUtility; import org.apache.commons.mail.EmailAttachment; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.MultiPartEmail; public class MailTest {

javaScript生成二维码(改造jquery.qrcode.js,使之支持中文,能带logo)

最近公司要求使用javaScript生成二维码,在网上搜了很多相关的资料,都不是很全面,俗话说:自己动手,丰衣足食. (这里吐槽下,有网友有了解决方案,却刻意把源代码压缩了,导致不知道改了什么东西,知识大家一起学习嘛,授人与鱼不如授人与渔!) 总结如下: 资料搜索 选择star最多的两个 第一个就是用的比较多的jquery.qrcode.js(但不支持中文,不能带logo)啦,第二个支持ie6+,支持中文,根据第二个源代码,使得,jquery.qrcode.js,支持中文. 支持中文 1 //q

Bitnami Redmine 中文附件名 报错修复

最近自己在服务器上搭了个redmine,用的是Bitnami的一键安装程序. 搭好后,运行得不错,居然还增加了负载均衡. 某天上传中文附件,打开报内部错误,去redmine官网看了下,果然有这个问题,中国人挺多. https://www.redmine.org/issues/19398 最后发现不是redmine造成的,redmine只是一个application,基于rails的,rails的文件名编码问题导致redmine出错. 上github,找到了解决方案 https://github.

修改 Lua支持中文变量名

1. 找到 LuaPlus 工程下的 Lua Source Files 下的 llex.c: 2. 在该文件中找到下面所列函数: static int llex (LexState *ls, SemInfo *seminfo) 3. 这是 Lua 的语法分析模块的关键函数,它由一长段 switch 构成,在一串 case 后找到 default 分支 4. 在该分支下找到如下代码段,这是一段完整的 if 分支,该代码段负责将符合条件的字符组合识别为 identifier (函数名或变量名)或 k

Linux--使 MySQL支持中文

使MySQL支持中文 欢迎转载,请保留出处:ZCShou     http://blog.sina.com.cn/zcshou MySQL 4.1及更高版本中,字符集的支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation).对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection). 一.登录MySQL,使用SHOW VARIABLES LIK

struts2 实现文件上传下载 (下载支持中文文件名)代码

struts2 实现文件上传: Action 代码: package com.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import org.apache.struts2.ServletActionContext; import com.o

数据库--中文表名及字段名的优缺点

今天我在了解某一功能时,发现数据库列名居然是中文的,工作六年多还是一回见到.只记得上学的时候,我们老师说过会出现兼容性等问题,具体已记不清楚了. 我好事的百度了下,整理了各网友给出的答案,希望对大家有帮助. 我们在使用中文的表名和列名的时候,先确认我们使用的数据库是否支持中文表名和列名.例如我最常用的SQL Server,它就是支持使用中文的.现在主流的数据库,对多语言的支持也在日益完善. 下面我们来说说选用中文的适合场景及优缺点. 场景: 1.在不熟悉的领域(机械,医疗等专业)里,英文往往并不

centos中文乱码修改字符编码使用centos支持中文

如何你的centos显示中文乱码,只要修改字符编码使centos支持中文就可以了,没有这个文件可以创建它,下面是修改步骤 一.中文支持 安装中文语言包: 复制代码 代码如下: yum groupinstall chinese-support 修改字符编码配置,没有这个文件就创建它: 复制代码 代码如下: vim /etc/sysconfig/i18n 修改后内容如下: 复制代码 代码如下: LANG="zh_CN.GB18030″SUPPORTED="zh_CN.UTF-8:zh_CN