URL传递中文参数
来源:互联网 发布:php文件上传源码 编辑:程序博客网 时间:2024/05/03 03:23
开发中文类网站,编码问题是一个无法回避的问题,主要涉及到数据库编码、网页文件编码、URL编码、JSP引擎编码问题,而URL编码和数据库编码问题尤为突出。
URL编码过程如下:
1.浏览器对提交URL进行编码,并提交给服务器
2.浏览器对URL进行解码,处理完毕将数据返回给浏览器
3.浏览器按照指定的编码格式显示
这个过程总共涉及到两次编码两次解码,任何一次出错都将导致乱码,即便是我们指定了编码格式,乱码也是经常出现,主要原因在于浏览器,由于RFC1738规定:只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。并没有规定中文字符要怎么编码,具体的编码交给浏览器,这就造成不同的浏览器对中文的编码格式可能会不同,即便是同一浏览器也会因为不同设置而对URL采取不同的编码,有没有一个通用的方法解决编码问题呢?
问题的关键在于浏览器的编码过程我们是不可控的,我们可以控的是服务端解码方案的设计,如果我们能让浏览器不对非ASCII字符进行编码这个问题就可以解决了,仔细审读RFC1738文档我们发现ASCII码字符浏览器不会对其编码,所以我们将中文编码为ASCII码,在服务端再解析出来就可以了,什么编码满足这个要求呢?答案就是UTF-8编码,我们可以先对中文进行UTF-8编码,浏览器就不会再次编码了,到达服务端再采取UTF-8解码,这样就就能还原中文了。
是不是URL采用UTF-8编码就万事大吉了,答案是否定的,在这里我们还是有必要说明一下,在各种语言中编码函数有多种,需要注意其会对那些字符进行编码,比如在JavaScript中encodeURI就不会对’/’进行编码,而java里encode函数就会对’/’进行编码,会导致路径找不到,提示400错误。是不是我们只对中文进行UTF-8编码,再按UTF-8解码就完美了,也不是,这里还要涉及到操作系统编码问题,如果不加考虑操作系统编码,这接按UTF-8解码,也会造成无法找到对应文件(假定使用的是windows简体中版)。
综上所述,比较完美的URL中文传输解决方案是:只编码需要编码的部分,解码则要考虑接收方的编码方式。
- 传递中文url参数
- URL传递中文参数
- URL传递中文参数
- URL中文参数传递问题
- URL中文参数传递问题
- url 参数传递中文乱码
- url传递参数中文乱码
- jsp URL中文参数传递
- url传递参数中文乱码
- [B/S]URL 传递中文参数
- c#asp.net url 传递中文参数
- ASP.net使用URL传递中文参数
- URL传递中文参数乱码问题
- 在URL里传递中文参数
- 关于URL请求传递中文参数乱码
- URL传递中文参数乱码解决办法
- Struts2 URL传递中文参数乱码问题
- url传递中文参数乱码的问题
- 我是一只铅笔
- 【好程序员笔记分享】——java中关于异常的知识点
- android错误之ListView设置setOnItemClickListener失效
- java系统高并发解决方案之图片服务器分离
- cookie的简单使用(1)
- URL传递中文参数
- Python爬虫实战一之爬取糗事百科段子
- 距离和相似度度量方法
- BitmapFactory.Options避免 内存溢出 OutOfMemoryError的优化方法
- 6.14
- 汽车标定
- 个人收集的大牛的一些经验和建议
- http服务器二次开发SDK
- Python爬虫实战二之爬取百度贴吧帖子