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 相关文章推荐
PHP脚本的10个技巧(2)
Oct 09 PHP
PHP 读取文件的正确方法
Apr 29 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
PHP 错误处理机制
Jul 06 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
详解Yii2高级版引入bootstrap.js的一个办法
Mar 21 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 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
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
python基础教程之字典操作详解
2014/03/25 Python
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python lambda和Python def区别分析
2014/11/30 Python
Python实现的数据结构与算法之队列详解
2015/04/22 Python
python计算方程式根的方法
2015/05/07 Python
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
Python字符串格式化输出方法分析
2016/04/13 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
信息管理员岗位职责
2013/12/01 职场文书
运动会广播稿50字
2014/01/26 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
街道务虚会发言材料
2014/10/20 职场文书
毕业设计工作总结
2015/08/14 职场文书