理解URLEncode:
URLEncode:是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu、Google等搜索引擎中输入中文查询时候,生成经过 Encode过的网页URL。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://ud03.kinoko.name/中文.rar -> 浏览器自动转换为 -> http://ud03.kinoko.name/%D6%D0%CE%C4.rar
注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,我试过了.我认为这应该算是Firefox一个bug.
编码为UTF-8的html文件中,
http://ud03.kinoko.name/中文.rar -> 浏览器自动转换为 -> http://ud03.kinoko.name/%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://ud03.kinoko.name/中文.rar';
echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";
echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";
//http%3A%2F%2Fud03.kinoko.name%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@ud03.kinoko.name/中文/中文.rar";
echo parseurl($url);
//ftp://ud03:password@ud03.kinoko.name/%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://ud03.kinoko.name/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar
分享到:
相关推荐
PHP作为广泛使用的服务器端脚本语言,提供了两个非常重要的函数:urlencode() 和 urldecode(),用于处理URL中的非ASCII字符以及避免URL中的特殊字符带来的问题。 ### urlencode() 函数 urlencode() 函数的主要作用...
URL编码通过urlencode()和rawurlencode()函数实现,其目的是将字符串编码成适合在URL中传输的格式。urlencode()会将非字母数字字符转换成百分号(%)后跟两位十六进制数的形式,而空格会被编码成加号(+)。rawurlencode...
具体来说,在PHP代码中,可以在调用json_encode()之前,对包含中文的数组使用urlencode()函数进行编码。例如,有一个数组如下: ```php $arr = array('Name' => '希亚', 'Age' => '20'); ``` 可以直接用json_...
**深入详解PHP** PHP,全称“PHP:Hypertext Preprocessor”,是一种广泛使用的开源脚本语言,尤其在Web开发领域应用广泛。本教程将深入探讨PHP的核心概念、语法特性以及安全实践,帮助读者从入门到精通,全面理解...
**PHP常用库函数详解** PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其在Web开发领域。它的库函数丰富多样,为开发者提供了强大的功能支持。本篇文章将详细解析一些PHP中的常用库函数,包括它们...
#### 二、函数详解 ##### 1. `parse_url` **功能说明**:`parse_url`函数用于解析URL并返回一个包含各个组成部分的关联数组。这些组成部分包括scheme(协议)、host(主机名)、port(端口号)、user(用户名)、...
【阿里校招PHP笔试知识点详解】 2015年8月,阿里巴巴集团开启了一轮针对应届毕业生的PHP岗位校招笔试。这场笔试旨在考察应聘者的PHP基础能力、编程技巧以及问题解决能力。以下是对可能涉及的PHP相关知识点的详细...
《PHP处理Unicode字符与编码详解》 在编程领域,尤其是Web开发中,PHP是一种广泛使用的脚本语言。当涉及到国际化(i18n)和本地化(l10n)时,正确处理Unicode字符和编码至关重要。...
其次,对于那些无法统一编码的情况,可以使用PHP的urlencode函数和JavaScript的decodeURI()函数来处理。具体操作是在PHP端将要通过json_encode转换的数据用urlencode函数进行URL编码,在客户端通过decodeURI()函数对...
PHP提供了`urlencode()`和`urldecode()`函数来完成这个任务。编码可以避免URL中包含的空格和其他特殊字符导致的问题,而解码则用于恢复原始URL。 2. **数据库存储**:为了保存和查找缩短的URL,我们需要一个数据库...
11.4.1 编码字符串——urlencode 181 11.4.2 解码字符串——urldecode 181 11.5 小结 182 第12章 PHP与JavaScript交互 183 12.1 JavaScript简介 183 12.2 JavaScript的数据类型 183 12.3 JavaScript程序设计基础 184...
PHP4拥有大量的内置函数,如日期和时间处理的`date()`、邮件发送的`mail()`、URL编码解码的`urlencode()`和`urldecode()`等,它们为日常编程提供了便利。 通过深入学习这些知识点,并结合提供的实例,你可以逐步...
【PHP实用代码片段详解】 PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其适合于Web开发。在编程过程中,拥有实用的代码片段能够显著提高开发效率。以下是一些精选的PHP代码片段,涵盖了发送短信...
2. URL编码与解码:在处理URL时,需要了解URL编码(如`urlencode()`和`urldecode()`函数)的概念,以确保URL中的特殊字符被正确处理。在加解密过程中,可能需要对URL进行编码和解码,以保证其在传输过程中的正确性和...
【PHP面试知识点详解】 在PHP领域,面试是一个评估求职者技能和知识的关键环节。这份"php面试资料"包含了培训老师多年经验积累的经典面试题目,旨在帮助开发者深入理解PHP的核心概念和实际应用。以下是对其中一些...
【PHP代码片段详解】 在PHP开发中,代码片段可以极大地提高开发效率,简化常见的编程任务。以下是10个非常实用的PHP代码示例,涵盖了不同的功能,帮助开发者更有效地完成项目。 1. **使用Textmagic API发送短信** ...
【PHP笔试题目详解】 在PHP面试过程中,掌握常见的笔试题目的解答技巧是提高成功应聘PHP职位的关键。以下是对提供的部分PHP笔试题目的详细解析: 1. `echo count("abc");` 输出什么? 答: 这行代码会输出1,因为`...
【PHP实习报告要点详解】 1. **页面间变量传递**: 在PHP最新版本中,自动全局变量默认关闭。要获取GET、POST或SESSION中的变量,需使用`$_GET['foo']`、`$_POST['foo']`和`$_SESSION['foo']`。尽管可以修改配置...