`

subversion+apache的中文路径问题解决过程

阅读更多

问题:

  用subversion+apache搭建好svn服务器后,发现svn库不支持中文路径。

 

解决过程:

  • 定位问题

        创建中文路径时,subversion报错内容是:http://**********/03%20%E6%B5%8B%E8%AF%95/ path not found,大概的意思是,subversion在服务器中找不到需要创建的目录的路径。

        由于路径是存在的,因此通过分析发现,应该是编码的问题,导致路径找不到。从报错信息上看“03%20%E6%B5%8B%E8%AF%95”是属于中文的UTF-8编码。

        如果浏览器发送的是UTF-8编码导致路径找不到,那服务器用的编码肯定就不是UTF-8了,确认一下:

        1、把服务器的环境变量修改为GBK: export LANG=zh_CN.GBK

        2、touch 中文测试.txt

        3、ls 输出能看到“中文测试.txt”,证明服务器保持的目录路径是GBK编码的

 

         那问题就找到了:客户端发送的URL编码是UTF-8,但是服务器保存的是GBK,因此,就没办法对应上了。

 

 

  • 解决问题

       定位了问题就好办了(只是我以为,结果折腾了我一天),要不要求客户端发送GBK编码的路径,要不就把UTF-8编码的URL转码为GBK。第一个方法不现实,因为客户是上帝嘛,那就

       向第二个方法努力吧!

 

       问了谷哥,apache本身就是用UTF-8编码去decode路径的,没有配置可以修改,但是可以使用一个模块去做URL的转码,这个模块就是 mod_encoding,好,那就去安装吧!

 

       安装大概的过程是这样的:

1.download & patch:
# wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
# wget http://webdav.todo.gr.jp/download/experimental/mod_encoding.c.apache2.20040616
新版本mod_encoding.c 覆盖
# cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c

这里必须要打一个apache 2.2的补丁。否则make也会出apxs rc=65536 之类的错误。
# wget http://www.aconus.com/~oyaji/faq/mod_encoding.c-apache2.2-20060520.patch
# cd mod_encoding-20021209 
# patch -p0 < mod_encoding.c-apache2.2-20060520.patch


2.install iconv-hook
# cd mod_encoding-20021209/lib
# ./configure --prefix=/usr
# make
# make install
# ldconfig

3 build mod_encoding

./configure --with-apxs=/opt/apache2.2/bin/apxs --with-iconv-hook=/usr/include
make
gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -Llib -liconv_hook

cp mod_encoding.so /opt/apache2.2/modules

4. config apache 2.2 

LoadModule headers_module modules/mod_headers.so
LoadModule encoding_module modules/mod_encoding.so
<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
<IfModule mod_encoding.c>
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
AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
</IfModule>

 

         上面的安装过程是网上抄袭的,我按照这个去安装碰到了几个问题:

1、# cd mod_encoding-20021209/lib

         安装这个iconv_hook的时候出错,看了他的安装过程,是需要联网的,我使用的服务器不能联网,杯具!

         那只好上网找了一个iconv_hook的rpm包,直接rpm -ivh安装了

 

2、最后模块的配置如下

LoadFile /usr/local/apache2/modules/libiconv_hook.so.1
LoadModule encoding_module modules/mod_encoding.so
<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
<IfModule mod_encoding.c>
    EncodingEngine on
    NormalizeUsername on
    SetServerEncoding UTF-8
DefaultClientEncoding UTF-8 GBK GB2312
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312
AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
</IfModule>

 

1
1
分享到:
评论

相关推荐

    使用Subversion进行版本控制(针对 Subversion 1.4)

    使用Subversion进行版本控制针对 Subversion 1.4(根据r2866编译) 参照网页版 http://svndoc.iusesvn.com/svnbook/1.4/制作而成。 目录 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书的结构 本书是...

    Apache-Subversion-1.9.7

    Apache-Subversion-1.9.7.zip解压,把as的svn的路径设置bin目录下的svn.exe即可使用

    Apache-Subversion-1.11.1.zip

    下载:Apache Subversion command line tools 第二步解压 解压后会生成两个文件夹: bin,Licenses 第三步修改webstrom配置 IDEA--&gt;setting--&gt;version Control--&gt;Subversion 路径填写第二步解压后文件夹...

    Apache22Passwd-远程修改基于Apache配置的Subversion的用户密码。

     这是一个用于修改Apache中AuthUserFile的工具,编写时主要是为了远程修改基于Apache配置的Subversion的用户密码。  目前提供for apache2.0版本及for apache2.2版本。  当Subversion配置成作为Apache的一个模块...

    CollabNetSubversion-server-1.7.3-1-Win32.exe [服务器端+客户端]

    CollabNet 官方提供的用于 Windows 操作系统 Subversion 服务器端以及客户端。 安装包内已经包含了当前最新版本的 Apache 2.2.22 (Win32) Server version: Apache/2.2.22 (Win32) Server built: Feb 13 2012 03:12:...

    SVN-Apache2.2.8安装配置说明

    2.2 什么是 Subversion 2 2.3 版本库(repository) 3 3 软件版本说明 3 4 SVN服务器安装配置 3 4.1 服务器软件下载 3 4.2 服务器安装 4 4.3 建立版本库(Repository) 9 4.3.1 命令行方式创建版本库 9 4.3.2 ...

    subversion-TortoiseSVN-使用手册(CHM+HTML,中英完整版)

    2.2.4. Subversion做了什么? 2.3. Subversion实战 2.3.1. 工作拷贝 2.3.2. 修订版本 2.3.3. 工作拷贝怎样追踪版本库 2.4. 摘要 3. 配置服务器 3.1. 以Apache为基础的服务器 3.1.1. 简介 3.1.2. 安装Apache 3.1.3. ...

    svn-1.4.3-setup.exe.7z

    mod_authz_svn 模块可以根据用户名和路径实现细粒度的权限控制,它对 Apache 服务器有效,在 Subversion 1.3 以上版本的 svnserve 中也实现了基于路径的授权。 一个可能的例子: [groups] admin = john, kate ...

    SVN Web改密码

    Subversion 1.8.11 Apache 2.2.29 步骤: 1.将目录下的bin、cgi-bin、conf,覆盖到SVN安装目录。 2.打开../cgi-bin/Apache22Passwd.cgi.ini,将auth_user_file的值改为账户文件的路径。 3.使用ie浏览器,输入...

    SVN使用手册中文版快速入门

    跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么...

    SVN使用手册中文版.chm

    跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么...

    SVN与CVSpdf格式详细说明书

    SVN全名Subversion,即版本控制系统,实现服务系统的软件。...将ApachePasswd.cgi改名为ApachePasswd.exe后系统提示缺少几个dll文件,把Apache2.0中bin的几个dll文件复制倒Apache 2.2.4 的cgi-bin目录下就可以解决了

    frsi:快速远程SVN信息-开源

    需要递归的svn信息和每个文件的日志(仅具有相关的更改路径),以及所有svn:externals属性,并且可以快速且全部在单个XML输出中吗? frsi info -R-相关日志文件--propget svn:externals --xml (第一次使用--log...

    svn1.8.3所有安装文件及安装配置说明

    1. 安装服务器Setup-Subversion-1.8.3.msi,安装路径D:/Program Files/TortoiseSVN 2. 安装客户端TortoiseSVN-1.8.2.24708-win32-svn-1.8.3.ms 3. 安装客户端对应语言包LanguagePack_1.8.2.24708-win32-zh_CN.msi 4....

    TortoiseSVN-1.6.15 svn server

     注意:步骤4,5,6中,如果在 Apache 相应的目录下没有找到这些文件,可以从 Subversion 安装目录中的 \bin 下拷过来,直接放到 Apache 相应的文件夹中即可。 7, 配置 Apache 安装目录下的 \conf\httpd.conf  ...

    android studio使用svn

    android studio使用svn Apache-Subversion-1.9.4.zip解压,把as的svn的路径设置bin目录下的svn.exe即可使用

    SVN操作手册中文版网页格式

    转换后为网页格式的操作手册中文版&gt; 目录 译者序 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书组织结构 Subversion 1.1的新特性,svn客户端和linux下命令行。 目录 1. 简介 1.1. 什么是 TortoiseSVN...

    Jenkins管理员操作手册.docx

    Ant安装包路径加入环境变量,软件:apache-ant-1.8.4 Ant_Home=C:\ant\apache-ant-1.8.4-bin\apache-ant-1.8.4 Path = C:\ant\apache-ant-1.8.4-bin\apache-ant-1.8.4\bin classpath = C:\ant\apache-ant-1.8.4-...

    TortoiseSVN中文手册

    2.2.1. 文件共享的问题 ................................................ 4 2.2.2. 锁定-修改-解锁 方案 ........................................... 5 2.2.3. 复制-修改-合并 方案 ..............................

    TortoiseSVN中文教程

    4 文件共享的问题 ....................................................................................................................... 4 锁定-修改-解锁 方案 .....................................

Global site tag (gtag.js) - Google Analytics