中文路径问题,中文url
2006-10-25 15:14
281 查看
中文路径问题,中文url
在使用rails的webrick过程中碰到中文url问题,原本认为很简单的事情其实并不简单。为了了解中文路径问题,特别在apache,iis下面做了试验。过程如下:首先要准备好gb2312和utf-8的文件名。这里使用python来获得。
>>> s_gb='我.txt' >>> print s_gb 我.txt >>> s_gb '/xce/xd2.txt' >>> s_unicode = s_gb.decode('gb2312') >>> s_unicode u'/u6211.txt' >>> s_utf8 = s_unicode.encode('utf-8') >>> s_utf8 '/xe6/x88/x91.txt' >>> rs_gb=r'/xce/xd2.txt' >>> rs_gb '//xce//xd2.txt' >>> rs_gb.replace('//x','%') '%ce%d2.txt' >>> rs_utf8 = r'/xe6/x88/x91.txt' >>> rs_utf8.replace("//x","%") '%e6%88%91.txt'
好了,到此为止已经获得了"我.txt"用不同的编码encode之后的名称,分别是'%ce%d2.txt'(gb2312)和'%e6%88%91.txt'(utf-8)。
现在将'我.txt'放置到web服务器上去,比如说是web的根目录下面。然后分别通过http://localhost/%ce%d2.txt和http://localhost/%e6%88%91.txt去访问。
一、IIS服务器。
两种方法都可以访问。由此可见IIS服务器具有某种识别机制,做出正确的选择。
二、apache服务器
用utf-8编码可以访问,用gb2312不可以访问。这个结果出乎我的意料,毫无疑问文件系统上的"我.txt"名称是以gb2312编码的,反而用utf-8可以访问?也许apache为了适应各种各样的平台,而有它的特殊考虑。这个apache服务器只是在我的windows2000服务器上测试,没有在linux获其它系统下测试,不过要测试也很简单。
三、rails的webrick
webrick就很简单了,你必须和文件系统上文件名的编码一致。用下面的python代码可以在文件系统上建立一个以utf-8编码文件名的'她的.txt',当然如果你用windows资源管理器去查看的话会是乱码。
>>> s='她的.txt' >>> su=s.decode('gb2312').encode('utf-8') >>> su '/xe5/xa5/xb9/xe7/x9a/x84.txt' >>> f = open("c:///xe5/xa5/xb9/xe7/x9a/x84.txt",'w') >>> f.write('abc') >>> f.close()
然后将这个文件放置到webrick的根目录下面,通过http://localhost/%e5%a5%b9%e7%9a%84.txt就可以访问。
这个例子当中需要注意的是,操作系统不总是允许你用不同的编码用作文件名,比如你用'她.txt'就不行。
通过这些测试之后,应该知道只有将中文文件名的文件在IIS下面,才能保证任何情况下都能正常访问。
这里的任何情况包括:
通过您自己的站点
别人将连接放在别人的网站上。
第一种情况下,三种服务器都可以做到。比如,对于apache服务器,只要将有中文连接的页面都设置成utf-8编码,而文件系统上的文件名是gb2312编码即可。而对于webrick,只要将页面设置成gb2312,文件系统名也是gb2312即可。真的吗?其实有例外,比如用ie来访问,并且ie设置成总是以utf-8发送的话。但是webrick可以将页面设置成utf-8,然后将文件名也设置成utf-8即可。但这前提是文件系统必须是utf-8编码文件名,比如novell的sles(这个我知道,其它的不知道)等。
在第二种情况下,你无法控制别人的网站用什么编码显示,所以IIS是唯一的选择。
相关文章推荐
- iOS开发网络篇 一一 请求路径(URL)中文转码问题
- Nginx、PCRE和中文URL(UTF8编码)rewrite路径重写匹配问题
- url中含有中文路径时访问出现404问题
- 网站URL路径的中文问题[中文路径编码]【转】
- paip.解决中文url路径的问题图片文件不能显示
- Nginx、PCRE和中文URL(UTF8编码)rewrite路径重写匹配问题
- paip.解决中文url路径的问题图片文件不能显示
- 网站URL路径的中文问题
- django+httpd+mod_pythonurl存在中文路径问题解决
- Apache2.2和Tomcat5.0的整合(二)—解决REDIRECT_URL的中文路径问题
- js修改iframe框架的src路径及js获取URL的get参数中文乱码的问题
- Nginx、PCRE和中文URL(UTF8编码)rewrite路径重写匹配问题
- 解决URl中文路径乱码问题
- Nginx 使用中文URL,中文目录路径
- JS中URL传中文参数引发的乱码问题
- JS URL传中文参数引发的乱码问题
- 如何解决 jsp 中url传值的中文乱码问题
- Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
- 访问url中存在中文,apache 重写出现403问题处理方案