php中urlencode使用

URLEncode的方式一般有两种,一种是传统的基于GB2312的Encode(Baidu、Yisou等使用),另一种是基于UTF-8的Encode(Google、Yahoo等使用)。 
本工具分别实现两种方式的Encode与Decode: 
中文 -> GB2312的Encode -> %D6%D0%CE%C4 
中文 -> UTF-8的Encode -> %E4%B8%AD%E6%96%87 

Html中的URLEncode: 

编码为GB2312的html文件中:http://s.jb51.net/中文.rar -> 浏览器自动转换为 -> http://s.jb51.net/%D6%D0%CE%C4.rar 

注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,我试过了,我认为这应该算是Firefox一个bug。 

编码为UTF-8的html文件中:http://s.jb51.net/中文.rar -> 浏览器自动转换为 -> http://s.jb51.net/%E4%B8%AD%E6%96%87.rar 

PHP中的URLEncode: 

<?php 
//GB2312的Encode 
echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+ 
echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. 
echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20 
echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. 
?> 

除了“-_.”之外的所有非字母数字字符都将被替换成百分号“%”后跟两位十六进制数。 

urlencode和rawurlencode的区别:urlencode将空格编码为加号“+”,rawurlencode将空格编码为加号“%20”。

如果要使用UTF-8的Encode,有两种方法: 

一、将文件存为UTF-8文件,直接使用urlencode、rawurlencode即可。 

二、使用mb_convert_encoding函数:

<?php 
$url = 'http://s.jb51.net/中文.rar'; 
echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n"; 
echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n"; 
//http%3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6%96%87.rar 
?> 

实例: 

<?php 
function parseurl($url="") 
{ 
$url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8')); 
$a = array("%3A", "%2F", "%40"); 
$b = array(":", "/", "@"); 
$url = str_replace($a, $b, $url); 
return $url; 
} 
$url="ftp://ud03:password@s.jb51.net/中文/中文.rar"; 
echo parseurl($url); 
//ftp://ud03:password@s.jb51.net/%D6%D0%CE%C4/%D6%D0%CE%C4.rar 
?> 

JavaScript中的URLEncode: 
如:%E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20 
encodeURI不对下列字符进行编码:“:”、“/”、“;”、“?”、“@”等特殊字符。 
如:http://s.jb51.net/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6%96%87.rar

转载于:https://www.cnblogs.com/timelesszhuang/p/3816279.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据旋转及DB2递归的应用

前几天做一调查&#xff0c;需要下边这样的一个转换。求一SQL--关于数据纵横转换的假设表A中有以下数据A1 1 01A1 1 02A1 1 03A2 1 01A2 2 01A2 2 02现希望一SQL能够查出下边这样的数据&#xff08;暂时假设表A中第三列只有01-03这三种可能值&#xff09;A1 1 01-02-03A2 1 01A…

stylus之内置方法(Built-in Functions)

内置方法(Built-in Functions) red(color)&#xff1a;返回color中的红色比重 green(color)&#xff1a;返回color中的绿色比重 blue(color)&#xff1a;返回color中的蓝色比重 alpha(color)&#xff1a;返回color中的透明度比重 dark(color)&#xff1a;检查color是否是暗色 …

对进程个数计数

在linux怎么知道一个指定的“进程名”有几个在运行了呢&#xff1f; 下面这下例子演示了这个过程&#xff0c;计数函数为&#xff1a;getProcessCount() #include <stdio.h>#include <stdlib.h>#include <string.h>// 获取进程数量int getProcessCount(char…

如何设计安全的用户登录功能

用户登录功能是Web应用系统具备的最基本的功能&#xff0c;关系到用户数据和应用系统数据的安全&#xff0c;设计一个安全的用户登录功能&#xff0c;涉及到以下几个方面的内容。 (一) 老生常谈——口令 1. 口令长度与复杂度限制 限制用户输入一些非常容易被破解的口令&#xf…

可耗竭且不可回收的资源

第四章可耗竭且不可回收的资源能量是人类最关键的资源&#xff0c;没有它&#xff0c;生命将会终结。第一节天然气&#xff1a;价格控制第二节卡特尔问题• 卡特尔卡特尔是资本主义国家中的垄断组织形式之一&#xff0c;由生产同类产品的企业联合组成。卡特尔成员企业一方面为了…

stylus之其余参数(Rest Params)

其余参数(Rest Params) 其余参数&#xff1a; Stylus支持name…形式的其余参数。这些参数可以消化传递给混写或函数的参数们。这在处理浏览器私有属性&#xff0c;如-moz或-webkit的时候很管用 下面这个例子中&#xff0c;所有的参数们(1px, 2px, …)都被一个args参数给简单…

Taro+react开发(28)本地用require线上不必

img_hongchen: require("../../assets/images/companyTitle/system_video_cover.png"),

FineUI表格模板列Undefined问题

一般是配置文件未添加ClientID"AutoID"引起转载于:https://www.cnblogs.com/fuqiang88/p/3822567.html

fork()使用(一)

第一贴&#xff1a;cu上关于fork()函数的精辟分析 声明&#xff1a;在别人的博客上看到这篇文章&#xff0c;真的很精辟&#xff0c;把问题一下子讲清楚了。所以&#xff0c;特意转贴在此&#xff0c;向各位高人致敬&#xff0c;也向原贴主致谢&#xff01;本人不改变原贴的风貌…

stylus之注释(Comments)

注释(Comments) 注释 Stylus支持三种注释&#xff0c;单行注释&#xff0c;多行注释&#xff0c;以及多行缓冲注释 单行注释&#xff1a; 跟JavaScript一样&#xff0c;双斜杠&#xff0c;CSS中不输出 多行注释&#xff1a; 多行注释看起来有点像CSS的常规注释。然而&a…

吃的文化

主料&#xff1b;发好活海参1条&#xff0c;120克&#xff0c;辅料龙口粉丝10克&#xff0c;蟹黄2克 &#xff0c;五花肉丁10克 西兰花1朵土鸡蛋1个浓汤200克 &#xff0c;海参过水&#xff0c;五花肉煸锅加蚝油2克&#xff0c;金标老抽1克&#xff0c;加浓汤200克 盐味精各一克…

进程初学(二)

首先&#xff0c;来看一下下面的源程序吧&#xff1a; #include <stdio.h>#include <unistd.h>int main(){pid_t pid;printf("Now only one process\n");printf("Calling fork...\n");pid fork();if(!pid){ // 这里是子进程执行的任务printf…

stylus之条件(Conditionals)

条件(Conditionals) 条件&#xff1a; 条件提供了语言的流控制&#xff0c;否则就是纯粹的静态语言。提供的条件有导入、混入、函数以及更多。下面的例子纯粹示例&#xff0c;并不是使用建议 if / else if / else 这没什么好说的&#xff0c;跟一般的语言一致&#xff0c;i…

Taro+react开发(30)引入静态资源地址

<Image mode"widthFix" src{require("./bussness/sysw.jpg")} />

发短信接口获取验证码

接口合作公司 &#xff1a;http://sms.inolink.com/LoginFront.aspx 从这里获取id <?php function execPostRequest($url,$fields){if(empty($url)){ return false;}//$fields_string http_build_query($post_array);foreach($fields as $key>$value) { $fields_strin…

有感于《你赔了我赚了》

昨晚&#xff0c;看了一部电影名叫《你赔了我赚了》。我心情久久不能平静下来&#xff0c;当晚碾转反侧不断地思考着、、、、、这部电影以其极为夸张的手法和特写镜头&#xff0c;聚焦在社会上虚假广告的拍摄&#xff0c;深刻地揭示了当今社会存在的丑陋现象。也正因为这个关系…

Express中use挂载中间件的方法

1.app.use([path,], function [, function…]) 挂载中间件方法到路径上。如果路径未指定&#xff0c;那么默认为”/” 2.一个路由将匹配任何路径如果这个路径以这个路由设置路径后紧跟着”/”。比如&#xff1a;app.use(‘/apple’, …)将匹配”/apple”&#xff0c;”/apple/…

对Ubuntu20.04.2 mate 桌面 Brisk menu 组件的配置

Brisk Menu 让菜单在 mate 桌面上灵活布局&#xff0c; 那个会跳动的精灵还是挺不错的&#xff0c;适当处理后就得到了下面干净利索的桌面。 Ubuntu 安装时&#xff0c;在控制中心留有 plank reference 设置功能&#xff0c;让屏幕中底部的这些组件在不同位置摆放。当进行配置时…