中文路径问题,中文url

转载 2006年10月25日 15:14:00

中文路径问题中文url

在使用railswebrick过程中碰到中文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获其它系统下测试,不过要测试也很简单。

三、railswebrick
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下面,才能保证任何情况下都能正常访问。

这里任何情况包括:
  1. 通过您自己站点
  2. 别人将连接放在别人网站上。

第一种情况下,三种服务器都可以做到。比如,对于apache服务器,只要将有中文连接页面都设置成utf-8编码,而文件系统上文件名是gb2312编码即可。而对于webrick,只要将页面设置成gb2312,文件系统名也是gb2312即可。真吗?其实有例外,比如用ie来访问,并且ie设置成总是以utf-8发送话。但是webrick可以将页面设置成utf-8,然后将文件名也设置成utf-8即可。但这前提是文件系统必须是utf-8编码文件名,比如novellsles(这个我知道,其它不知道)等。

在第二种情况下,你无法控制别人网站用什么编码显示,所以IIS是唯一选择。

 

相关文章推荐

paip.解决中文url路径的问题图片文件不能显示

paip.解决中文url路径的问题图片文件不能显示#现状..中文url路径 图片文件不能显示#原因解析 查看累挂发送d url,,,俄使用的是ff..它把url转换成个 http://localhos...

springmvc 配置默认路径 以及 Jsp include跳转controller 以及 url get访问中文乱码

一、springmvc 配置默认路径 1.默认tomcat容器的默认页面。  /index.html  这种方式适合访问静态的页面(也包括JSP)或者说是没有任何参数的页面。 或者配置web.xml...

URL 含中文路徑名稱的終極解法

URL 含中文路徑名稱的終極解法 網路科技Add comments 九月 082005 URL 含中文路徑名稱的終極解法 - 利用 mod_fileiri 解決中文檔名問題 當然,...

Http,Https (SSL)的Url绝对路径,相对路径解决方案Security Switch 4.2 中文帮助文档

安全开关(Security Switch) 使各种asp.net网络应用程序可以自动切换页面请求/资源之间的HTTP和HTTPS协议而不需要在HTML中编写绝对url。 通过2.x以上版本的Sec...

indy httpserver 接收URL包含中文参数乱码的问题

在测试TIdHttpServer的时候,发现浏览器提交的URL包含中文时会乱码,我用的是XE7 UPDATE1,INDY是10。 procedure TForm1.idhtpsrv1CommandG...

JavaScript利用URL向后台传入中文参数乱码问题解决之道

我们经常会在前台请求以后后台对应URL时,在URL中利用此URL向后台传递参数,但如果参数为中文会存在乱码问题。下面我们考虑一个场景来详细说明URL传递参数时的乱码解决之道。 假设我...

JSP使用URL编码传递中文参数问题的解决

# 传参出现乱码一直是编写应用程序困扰广大程序员的一大难题,同样难倒了我。这种问题,写个编码过滤器,有时居然不管用。在写应用程序中,会有中文传参的需要,如下:            # 但中文参...

URL传参中文乱码问题

今天是Mock单元测试时,有几个测试是从路径获取参数,但是有一个需要传递中文参数,但是传递过去久成了乱码。 后找到有效的,记录下来: public static void main(String[...

url 中文乱码问题

URL传参中文对于程序员来说,是个很头疼的问题吧。虽然在尽量避免使用中文参数,但总有避免不了的时候。现就自己的经验,总结如下: 1.将字符串转码:newString(“xxxxx”.getBytes...

JavaScript利用URL向后台传入中文参数乱码问题解决之道!

我们经常会在前台请求以后后台对应URL时,在URL中利用此URL向后台传递参数,但如果参数为中文会存在乱码问题。下面我们考虑一个场景来详细说明URL传递参数时的乱码解决之道。假设我们页面中拥有一个输入...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中文路径问题,中文url
举报原因:
原因补充:

(最多只允许输入30个字)