Web服务器中文URL研究心得(学习所得,跟大家分享)
来源:互联网 发布:网络和信息安全责任书 编辑:程序博客网 时间:2024/06/05 14:28
http://www.chinaunix.net 作者:jnet 发表于:2006-01-01 15:11:09 【发表评论】 【查看原文】 【Web服务器讨论区】【关闭】
经测试和研究,有如下规则:
1.IE访问WEB的简单顺序为:
IE<->WebServer<->文件系统
即IE向WebServer发送URL请求,该请求是通过某种编码做了encode的,WebServer接到请求后对其进行解码,然后再用解码后的地址到文件系统获取请求的内容返回到客户端的IE。
从以上顺序可以看出,如果要正常使用中文路径的URL,必须保证:1,IE端到WebServer端的URL请求的编码和解码的字符集必须一致,2,WebServer到文件系统获取中文路径内容使用的字符集也要跟文件系统的文件名的编码一致。
2.ext2、ext3等文件系统(ufs文件系统估计也是)不像ntfs或者fat32文件系统,前者文件名是用原码的,不作任何编码,而后者 是通过Unicode编码的,故而在win机器上的WebServer到文件系统获取中文路径的文件的问题不大,但是在Linux/Unix上,就必须保 证使用正确的字符编码才能正确访问中文路径了。
3.IE默认是通过UTF8发送URL请求的,如果不想用UTF-8,即必须修改IE的配置,具体方法是IE选项->高级->不选总是以UTF-8发送URL。
4.ftp协议一般都是通过GBK编码作为路径编码传输文件的,故而要正确访问ext2、ext3经过ftp传输的中文路径文件,必须使用GBK才能正确访问到,我用zh_CN.GB18030编码可以成功访问。
根据以上等出结论,对Tomcat和Apache做了测试结果如下:
Tomcat在Linux/Solaris上:
1.将启动tomcat进程的用户的编码设置为zh_CN.GB18030,这样可以保证Tomcat服务器正确访问文件系统的中文路径的文件,我测试了其它字符集,即不能正常访问到;
2.修改Tomcat配置,指定请求解码字符集(URIEncoding="UTF-8"),那么,IE如果用UTF-8发送URL请求的话是可以正确访问到中文路径的内容的;
3. 修改Tomcat配置,指定请求解码字符集(URIEncoding="GBK"),那么,IE如果用UTF-8发送URL请求的话将不能正确访问到中文路径的内容,可以将IE设置为“不总是以UTF-8发送URL请求”,即此时可以正确访问。
注意:如果请求的是jsp等java内容,还必须对程序做修改,使其使用正确的编码和解码字符集做get和put操作,才能正常,这个由开发人员完成测试。
Apache在Linux/Solaris上:
1.尚未找到Apache修改请求解码字符集设置的地方,或者根本apache本来就没得修改,已经写死在apache程序里面,除非 修改程序才能修改指定URL请求的解码字符集,在这种情况下,将IE设置成了“不总是以UTF-8发送URL请求”,那么也是可以正确访问中文路径的内容 的。
综上所述,如同只是单独使用Tomcat,那么可以根据实际情况选择某种方式;如果使用Apache或者apache结合tomcat, 那么只能迁就Apache,故而必须要求客户端将IE修改成了“不总是以UTF-8发送URL请求”才能正常使用中文路径URL。由于IE默认情况下就是 配置成用UTF-8发送请求,故而后者比较麻烦!
[ 本帖最后由 HonestQiao 于 2005-12-13 14:43 编辑 ]
HonestQiao 回复于:2005-12-13 14:18:07
不错不错
fcwsoft 回复于:2005-12-22 18:21:20
不错不错
ASDF1982 回复于:2005-12-23 13:00:42
幼稚!
firewoo 回复于:2005-12-29 18:21:06
使用IE的太多了,可是改编码迁就apache不太现实,还是在做网站时不要使用中文路径和文件名吧
fnaps 回复于:2006-01-01 15:11:09
哈,感觉麻烦。不过如果能再加上实际操作的方法。会受益更多。
【来源】
经测试和研究,有如下规则:
1.IE访问WEB的简单顺序为:
IE<->WebServer<->文件系统
即IE向WebServer发送URL请求,该请求是通过某种编码做了encode的,WebServer接到请求后对其进行解码,然后再用解码后的地址到文件系统获取请求的内容返回到客户端的IE。
从以上顺序可以看出,如果要正常使用中文路径的URL,必须保证:1,IE端到WebServer端的URL请求的编码和解码的字符集必须一致,2,WebServer到文件系统获取中文路径内容使用的字符集也要跟文件系统的文件名的编码一致。
2.ext2、ext3等文件系统(ufs文件系统估计也是)不像ntfs或者fat32文件系统,前者文件名是用原码的,不作任何编码,而后者 是通过Unicode编码的,故而在win机器上的WebServer到文件系统获取中文路径的文件的问题不大,但是在Linux/Unix上,就必须保 证使用正确的字符编码才能正确访问中文路径了。
3.IE默认是通过UTF8发送URL请求的,如果不想用UTF-8,即必须修改IE的配置,具体方法是IE选项->高级->不选总是以UTF-8发送URL。
4.ftp协议一般都是通过GBK编码作为路径编码传输文件的,故而要正确访问ext2、ext3经过ftp传输的中文路径文件,必须使用GBK才能正确访问到,我用zh_CN.GB18030编码可以成功访问。
根据以上等出结论,对Tomcat和Apache做了测试结果如下:
Tomcat在Linux/Solaris上:
1.将启动tomcat进程的用户的编码设置为zh_CN.GB18030,这样可以保证Tomcat服务器正确访问文件系统的中文路径的文件,我测试了其它字符集,即不能正常访问到;
2.修改Tomcat配置,指定请求解码字符集(URIEncoding="UTF-8"),那么,IE如果用UTF-8发送URL请求的话是可以正确访问到中文路径的内容的;
3. 修改Tomcat配置,指定请求解码字符集(URIEncoding="GBK"),那么,IE如果用UTF-8发送URL请求的话将不能正确访问到中文路径的内容,可以将IE设置为“不总是以UTF-8发送URL请求”,即此时可以正确访问。
注意:如果请求的是jsp等java内容,还必须对程序做修改,使其使用正确的编码和解码字符集做get和put操作,才能正常,这个由开发人员完成测试。
Apache在Linux/Solaris上:
1.尚未找到Apache修改请求解码字符集设置的地方,或者根本apache本来就没得修改,已经写死在apache程序里面,除非 修改程序才能修改指定URL请求的解码字符集,在这种情况下,将IE设置成了“不总是以UTF-8发送URL请求”,那么也是可以正确访问中文路径的内容 的。
综上所述,如同只是单独使用Tomcat,那么可以根据实际情况选择某种方式;如果使用Apache或者apache结合tomcat, 那么只能迁就Apache,故而必须要求客户端将IE修改成了“不总是以UTF-8发送URL请求”才能正常使用中文路径URL。由于IE默认情况下就是 配置成用UTF-8发送请求,故而后者比较麻烦!
[ 本帖最后由 HonestQiao 于 2005-12-13 14:43 编辑 ]
HonestQiao 回复于:2005-12-13 14:18:07
不错不错
fcwsoft 回复于:2005-12-22 18:21:20
不错不错
ASDF1982 回复于:2005-12-23 13:00:42
幼稚!
firewoo 回复于:2005-12-29 18:21:06
使用IE的太多了,可是改编码迁就apache不太现实,还是在做网站时不要使用中文路径和文件名吧
fnaps 回复于:2006-01-01 15:11:09
哈,感觉麻烦。不过如果能再加上实际操作的方法。会受益更多。
【来源】
- Web服务器中文URL研究心得(学习所得,跟大家分享)
- uchome2.0的ajax技术流程研究心得跟大家分享
- uchome2.0的ajax技术流程研究心得跟大家分享
- 跟大家分享一下directUI的心得
- 跟大家分享一下directUI的心得
- makefile的一点心得, 转过来跟大家分享一下 ------ %:
- Web服务器中文URL问题
- c++指针详解(跟大家分享)
- 新来,报个道,以后跟大家一起学习,分享
- Android 手机通过URL跟WEB服务器通信
- Android通过URL跟web服务器通信那点破事
- Android通过URL跟web服务器通信那点破事
- 我最近研究了hive的相关技术,有点心得,这里和大家分享下。
- 跟大家分享一个提升SQL语句的心得—快速算出是否属于最新单价
- 学习成长中的坎——跟大家分享一段学习生物的经历
- 跟大家分享一下网站签约过程
- 科学网两篇好文章,跟大家分享下
- 刚开始学习android,做了个“二十一点”的小游戏,跟大家分享下!
- 松下传真机清零与维修
- 日期格式转换
- 涙そうそう
- TStringList的一些高级用法
- 多项删除
- Web服务器中文URL研究心得(学习所得,跟大家分享)
- linux 内核进程与用户进程的通信 方法一 使用sockopt与内核交换数据
- 用代码修改Web.Config里的键值
- 软件项目管理之四:高效的管理优先权
- osworkflow配置说明
- 在Asp.net中利用OWC11画统计图(柱状图,饼状图及线状图等)及补充
- webservice 提示远程连接已经关闭的解决方法
- 一封来自大学老师的信——给所有还在大学中徘徊的人
- 创造很快乐