apache认为client传来的webdav请求是utf-8的编码,但对中文来说实际上更多是gb编码。

mod_encoding是日本人做的一个产品,解决了apache针对webdav的编码支持问题。

mod_encoding支持apache1.3和apache2,在debian上有对应的包libapache2-mod-encoding。配置参数包括:

EncodingEngine (on|off)
编码转换引擎开关
SetServerEncoding <enc>
设置服务器文件系统的编码
AddClientEncoding <agent> <enc> [<enc> ...]
设置某个客户端请求代理的编码

DefaultClientEncoding <enclist>
缺省的客户端编码清单

NormalizeUsername (on|off)
是否规范话用户名。Windows平台上(特别是WinXP)认证的适合传递的用户名格式是"hostname\\username",这个不标准,自动去除hostname。
典型的配置如:

LoadModule encoding_module modules/mod_encoding.so
<Location /dav>
 EncodingEngine on
 NormalizeUsername on
</Location>
SetServerEncoding UTF-8
DefaultClientEncoding UTF-8 gb18030 big5
AddClientEncoding "Microsoft .* DAV 1.1" gb
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 gb18030 big5
AddClientEncoding "Microsoft .* DAV" UTF-8 gb18030 big5
AddClientEncoding "(Microsoft .* DAV 1.1)" gb18030 big5
AddClientEncoding "Microsoft-WebDAV*" UTF-8 gb18030
AddClientEncoding "RMA/*" gb18030
AddClientEncoding "xdwin9x/" gb18030
AddClientEncoding "cadaver/" UTF-8 gb18030
AddClientEncoding "Mozilla/" gb18030

mod_encoding对中文用户很重要,但目前几乎没有中文资料。原始网站也是日文的,也没有太多英文文档,只有去看源代码,抓出这个文档 :-(

写这个帖子的同时,发现了一个中日文翻译工具,虽然翻译出来的东东实在不怎么样。

Net | 评论(0) | 引用(0) | 阅读(7118)