JS中encodeURIComponent函数用php解码的代码


Posted in PHP onMarch 01, 2012

JS中encodeURIComponent函数给中文编码后,如何用php解码??
前提:编码前的中文可能是gbk,gb2312,utf-8等。

urldecode() 
iconv()

在JS中使用了encodeURIComponent对中文进行编码在PHP中使用iconv('UTF-8','gb2312',$q);就可以得到你需要的字串了,其中gb2312根据你实际应用来定如还不明白为什么看下面的文章

URL编码转换,escape() encodeURI() encodeURIComponent()

本文介绍对url编码的三种函数 escape() ,encodeURI() ,encodeURIComponent()

escape() 方法:
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +

encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '

encodeURIComponent() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )

因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。

注意:escape 方法不能用来对“统一资源标识符”(uri) 进行编码。对其编码应使用 encodeuri 和 encodeuricomponent 方法。另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。

总结一下用法:

1、HTTP/POST方式在缺省情况下,采用的是“x-www-form-urlencoded”进行编码,它和JavaScript里面的encodeURI所起的作用是一样的;
2、经过这样编码的内容,到达后台时,其中的字符都是UTF-8编码格式的;
3、如果你的Servlet/JSP指定输出使用的Content-Type是UTF-8,恭喜你,你不需要对这些Parameters进行特别的编码、解码操作,它一定是正常的;
4、否则你需要对这些parameter进行解、编码操作,例如你的页面是GBK编码,那么你需要这么写:
String sPara = new String(request.getParamter("test").getBytes("iso-8859-1"),"GBK");
采用gb2312编码的也可以采用GBK编码;
5、如果你是在eclipse中进行工作,请注意你的Servlet和JSP文件的属性,其中的编码必须和content-type中设置的一样,否则javac会对你的文件进行错误的编码,这时候的字节码文件本身的字符串就是错误的,输出也不顶用;
6、最后做一个总结:
6.1、servlet/JSP文件本身的编码必须和content-type输出的一致,否则需要加入额外的编码、解码步骤;
6.2、HTTP/POST方式和encodeURI方式传入的编码都是UTF-8的;
6.3、普通的window.open(...),也就是HTTP/GET方式,其传入的编码是和运行script的页面编码一致的;
6.4、后台解码必须通过iso-8859-1进行解码,再使用你的目标编码进行编码;
6.5、 response.setContentType("text/xml;charset=utf-8");
如有汉字回显至页面,须加charset=utf-8字样
request.setCharacterEncoding("UTF-8");//页面如通过POST过来,含有汉字,须加这一句

此语句放在程序最前面;

6.6 请保证项目属性编码为"UTF-8",请求页面与响应页面编码一致(可以是后台)UTF-8.必须保证文件

属性和ContentType设置一致

PHP 相关文章推荐
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
php导入模块文件分享
Mar 17 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
PHP设计模式之装饰者模式
Feb 29 #PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 #PHP
mysql总结之explain
Feb 27 #PHP
php&mysql 日期操作小记
Feb 27 #PHP
MySQL时间字段究竟使用INT还是DateTime的说明
Feb 27 #PHP
php explode函数实例代码
Feb 27 #PHP
PHP中获取文件扩展名的N种方法小结
Feb 27 #PHP
You might like
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
js密码强度检测
2016/01/07 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
python制作最美应用的爬虫
2015/10/28 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
Python3 修改默认环境的方法
2019/02/16 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
病人家属写给医院的感谢信
2015/01/23 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
小学教育见习总结
2015/06/23 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
优秀员工演讲稿
2019/06/21 职场文书
创业计划书之酒店
2019/08/30 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL