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 相关文章推荐
一次编写,随处运行
Oct 09 PHP
php5 and xml示例
Nov 22 PHP
php SQL之where语句生成器
Mar 24 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
php抽奖小程序的实现代码
Jun 18 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
php面试中关于面向对象的相关问题
Feb 13 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
如何用PHP实现多线程编程
May 26 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 xml 入门学习资料
2011/01/01 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
javascript 面向对象思想 附源码
2009/07/07 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
还款承诺书范文
2014/05/20 职场文书
温馨提示标语
2014/06/26 职场文书
投资入股合作协议书
2014/10/28 职场文书
工作收入证明范本
2015/06/12 职场文书
《秋思》教学反思
2016/02/23 职场文书
正则表达式基础与常用验证表达式
2022/06/16 Javascript