我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

其原理是将汉字转化为十六进制并按照一定的规则组合成字符串,实现字符的编码与解码,保证URL数据传输过程中字符的完整性和兼容性。本文主要讨论汉字的编码。

1.浏览器对中文字符进行编码

如果在浏览器中输入中文,会自动进行URL编码,如下

在按下 Enter 键之前

按下 Enter 键后

2.()函数原理

()函数用于对URL字符串进行编码。这里主要讨论汉字的编码。

以下示例

复制代码如下:

echo ('别对我着迷'); //输出:%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7

()函数的原理是先将汉字转为十六进制,然后在每个字符前面添加一个标识符%,知道了这个原理,就可以实现自定义URL编码的功能了,代码如下

复制代码如下:

$ =“不要对我着迷”;

$ = ($);

回显 $;

$ = 数组();

//十进制

对于($i=0;$iif(ord($[$i])>127){

$[] = ord($[$i]).' '.ord($[++$i]);

($);

//十六进制

$ = 数组();

($ 为 $v){

$dec = (" ",$v);

$[] = "%".($dec[0])。" "。"%".($dec[1]);

($);

上述代码在文章【PHP中汉字转换原理浅析】中有详细论述,其通过获取汉字的每个字符并转换成十六进制,并在每个字符前面添加特殊标识%来实现()函数的功能,输出结果如下

然后将输出结果与直接使用()编码后的字符进行比较,如上:%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7

从上面的例子我们可以看出,使用()函数对汉字进行编码,本质上就是将字符转化为十六进制然后在字符左边添加特殊标识符%。

3.()函数原理

使用()函数对编码后的URL字符串进行解码,示例如下

echo ('%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7'); //输出:别对我着迷

()函数与()函数相反,用于对编码后的URL字符串进行解码,其原理是将十六进制字符串转为汉字。结合上面的例子,也可以使用自定义函数对字符串进行解码。

复制代码如下:

$ = '%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7';

$ = ($);

$hexs = 数组();

对于($i=0;$iif($[$i]=='%'){

$hexs[] = $[++$i].$[++$i];

$num = 计数($hexs);

对于($i=0;$iecho chr(($hexs[$i]))。chr(($hexs[++$i]));

上述示例代码首先根据字符串规则提取每个字符的十六进制,然后使用()函数将十六进制转换为十进制,再使用chr()函数将十进制转换为字符,从而实现了十六进制到字符的转换,输出结果如下

4.()和()函数说明

(PHP 3、PHP 4、PHP 5)

-- 编码 URL 字符串

阐明

( 字符串 )

返回一个字符串,其中除 -_. 之外的所有非字母数字字符均被百分号 (%) 和两个十六进制数字替换,空格被编码为加号 (+)。此编码与 WWW 表单 POST 数据的编码相同,也与 /x-www-form- 的媒体类型编码相同。由于历史原因,此编码与编码(参见 ())的不同之处在于它将空格编码为加号 (+)。此函数便于对字符串进行编码并将其用于 URL 的请求部分,也便于将变量传递到下一个页面。

(PHP 3、PHP 4、PHP 5)

-- 解码已编码的 URL 字符串

阐明

( 字符串 )

解码给定编码字符串中的任何 %##。返回解码后的字符串。

五、参考资料

()阐明

()阐明

二维码
扫一扫在手机端查看

本文链接:https://by928.com/6058.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线