中文路径问题,中文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是唯一选择。

 

【WEB】url路径包含中文和表单get请求包含中文

一、描述         URL路径包含中文和表单get方式请求包含中文是不一样的,前者是请求路径中包含了中文,而后者是URL中的查询字符串包含了中文。形如http://xx/oo/你好/index....
  • reliveIT
  • reliveIT
  • 2015年04月07日 22:42
  • 2473

访问带有中文路径的网络资源无法访问时需要转换编码

我们在浏览器访问网络资源时url路径默认是utf-8编码,但有时候我们的路径中带有中文,这时候我们直接在浏览器中键入中文路径是无效的。这个时候我们就需要将路径转换为gb2312的编码。比如我要访问“你...
  • liuxiong1115
  • liuxiong1115
  • 2013年09月12日 15:37
  • 1990

JAVA运用URL类 openStream 一个路径中,文件名为中文的问题

url 中可能带有中文、空格或者单引号等字符,需要进行重编码,解决办法如下:publich void test(){ url = encodeURLChinese(url); } /** ...
  • TianLuoHuaRuXue
  • TianLuoHuaRuXue
  • 2015年03月02日 19:07
  • 592

解决android获取URL中文路径乱码

URl用中文去访问是没有问题的,因为android在内部进行了转码。 但是从URL获取文件名的时候,因为android已经转过码,所以得到的就是乱码了。这时候需要用到android提供的方法Uri.d...
  • hutengfei0701
  • hutengfei0701
  • 2013年01月15日 09:34
  • 6975

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

paip.解决中文url路径的问题图片文件不能显示 #现状..中文url路径 图片文件不能显示 #原因解析 查看累挂发送d url,,,俄使用的是ff..它把url转换成个 ht...
  • attilax
  • attilax
  • 2014年04月17日 23:36
  • 3215

python爬虫中对含中文的url处理

在练习urllib操作中,遇到了url中ha
  • ice4026
  • ice4026
  • 2014年06月30日 00:18
  • 3034

iOS开发网络篇 一一 请求路径(URL)中文转码问题

当发送网络请求: 确定请求路径URL 时, 观察url中是否包含中文, 如果包含中文 需要将url中的中文进行转码操作. 注意:  上面这种情况 只针对于发送GET请求,因为GET请求的URL 包...
  • m0_37989980
  • m0_37989980
  • 2017年12月17日 13:10
  • 165

使用httpclient下载图片时,url中含有中文字符,导致下载失败的解决方法

先说解决方法吧: 修改tomcat的server.xml文件,在Connector标签中加上URLEncoding参数 maxSpareThreads="75" enableLookups="...
  • afkbcgz
  • afkbcgz
  • 2015年10月13日 14:18
  • 652

url传递中文乱码解决

js合成url时,如果参数是中文,传到struts2中会乱码,解决办法如下: 1.js文件中使用encodeURI()方法(必须套两层)。 login_name = encodeURI(encod...
  • dcchencsdn
  • dcchencsdn
  • 2016年05月24日 17:55
  • 1505

asp.net中URL参数传值中文乱码的三种解决办法

在做Asp.Net开发的时候,参数传递中文时,经常会遇到页面乱码的问题,下面是在网上收集的相关资料,请大家参考: 解决的方法一般有3种: 1.设置web.config文件 ....
  • lijian260
  • lijian260
  • 2015年10月15日 10:15
  • 2363
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中文路径问题,中文url
举报原因:
原因补充:

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