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 多进程 解决难题
Jun 22 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
基于php下载文件的详解
Jun 02 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
php去除HTML标签实例
Nov 06 PHP
PHP临时文件的安全性分析
Jul 04 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
smarty内部日期函数html_select_date()用法实例分析
Jul 08 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
详解php用static方法的原因
Sep 12 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 阴历-农历-转换类代码
2012/01/16 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
JS判断数组那点事
2017/10/10 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
浅谈Python peewee 使用经验
2017/10/20 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
银河香水:Galaxy Perfume
2019/03/25 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
影子教师研修方案
2014/06/14 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书