与PHP交互中文编码的几个函数 decodeURIComponent,encodeURIComponent,encodeURI,decodeURI
2013-06-02 15:19
507 查看
今天在写一个小东西的时候,由前台想后台PHP发送数据,使用了PHP的函数 json_encode();
函数的功能是将一个PHP数组转化成 json格式的字符串
申明:所有操作都是在UTF-8编码下。
输出的结果是 : {"name":"bell","age":"22","desc":"\u5f88\u5e05\u5f88\u5e05\u5f88\u5e05\u5f88\u5e05\u7684\u4eba\uff01"}
很显然,字母和数字没任何问题,但是中文 \u的这种方式,不是我们想要的。如果通过AJAX传回前台,javascript也无法识别。
在PHP中有个相反作用的函数
输出结果:stdClass Object ( [name] => angel [age] => 18 [desc] => 非常非常漂亮! )
但是:
我们讲数组转化为JSON,不是为了再把JSON转化为PHP数组的,而是希望将JSON直接应用于前台的JS上。
所以,就必须将被PHP的json_encode转化的中文做一些特殊性的处理。
在PHP中有这样一对函数:
urlencode() 和 urldecode(); 看上去和JS的 encodeURI,decodeURI 很像,他们的作用也差不多。
urlencode的意思是,将URL上的特殊字符转化成%形式的字符,用于地址栏传递数据。
如下:
输出 : http%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%E7%BF%BB%E8%AF%91
同理,这个函数也可以用在字符处理上,将中文给转化成这样的数据,然后存入文件或者数据库中。
urldecode作用相反。
在JS中,我们拿到这样的数据后,可以通过decodeURIComponent(),将数据转化为我们所熟悉的UTF-8编码的中文。
函数的功能是将一个PHP数组转化成 json格式的字符串
申明:所有操作都是在UTF-8编码下。
<?php $arr = Array( 'name' => 'bell', 'age' => '22', 'desc' => '很帅很帅很帅很帅的人!' ); $json = json_encode($arr); echo $json; ?>
输出的结果是 : {"name":"bell","age":"22","desc":"\u5f88\u5e05\u5f88\u5e05\u5f88\u5e05\u5f88\u5e05\u7684\u4eba\uff01"}
很显然,字母和数字没任何问题,但是中文 \u的这种方式,不是我们想要的。如果通过AJAX传回前台,javascript也无法识别。
在PHP中有个相反作用的函数
$j = '{"name":"angel","age":"18","desc":"非常非常漂亮!"}'; // 注意,JSON里面属性的引号必须是双引号,否则无法输出。 print_r(json_decode($j));
输出结果:stdClass Object ( [name] => angel [age] => 18 [desc] => 非常非常漂亮! )
但是:
我们讲数组转化为JSON,不是为了再把JSON转化为PHP数组的,而是希望将JSON直接应用于前台的JS上。
所以,就必须将被PHP的json_encode转化的中文做一些特殊性的处理。
在PHP中有这样一对函数:
urlencode() 和 urldecode(); 看上去和JS的 encodeURI,decodeURI 很像,他们的作用也差不多。
urlencode的意思是,将URL上的特殊字符转化成%形式的字符,用于地址栏传递数据。
如下:
$str = "http://www.baidu.com/s?wd=翻译"; echo urlencode($str);
输出 : http%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%E7%BF%BB%E8%AF%91
同理,这个函数也可以用在字符处理上,将中文给转化成这样的数据,然后存入文件或者数据库中。
urldecode作用相反。
在JS中,我们拿到这样的数据后,可以通过decodeURIComponent(),将数据转化为我们所熟悉的UTF-8编码的中文。
相关文章推荐
- 一张图看懂encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别 一、这四个方法的用处 1、用来编码和解码URI的 统一资源标识符
- JavaScript 的几个编码函数 escape/encodeURI/encodeURIComponent
- JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解
- JavaScript中有三个可以对字符串编码的函数escape()、encodeURI()、encodeURIComponent()已便在所有计算机适用
- javascript文字编码函数escape,encodeURI,encodeURIComponent使用详解
- Flex中几种编码函数[escape,encodeURI,encodeURIComponent]的比较(学习笔记)
- Javascript中三个编码函数escape,encodeURI和encodeURIComponent的区别
- js文字编码函数escape,encodeURI,encodeURIComponent 的使用
- 三个可以对字符串编码的函数escape()、encodeURI()、encodeURIComponent()之间的区别详解
- JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解
- JavaScript中编码函数escape,encodeURI,encodeURIComponent
- JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解
- JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解
- 页面对中文进行编码——escape,encodeURI,encodeURIComponent
- escape,encodeURI,encodeURIComponent三个对文字编码的三个函数
- js 解决中文乱码函数-js中escape,encodeURI,encodeURIComponent三个函数的区别
- 关于escape(), encodeURI()和encodeURIComponent()编码的几个实验
- 关于escape(), encodeURI()和encodeURIComponent()编码的几个实验
- JavaScript中有对字符串编码的三个函数:escape,encodeURI,encodeURIComponent
- JS----编码,解码decodeURIComponent,encodeURIComponent,decodeURI,encodeURI