关于数据编码的一些理解

一、浏览器默认编码一般为 UTF-8;

二、URL 编码:

1、在URL中传递参数值:当在URL中传递参数值时,特殊字符可能会被解释为URL语法的一部分,而导致错误的行为。为了避免这种情况,可以对参数值进行URL编码,以确保它们只被解释为纯文本。

2、在表单中传递参数值:当通过表单提交数据时,特殊字符可能会被解释为HTML语法的一部分,而导致错误的行为。为了避免这种情况,可以对表单参数值进行URL编码,以确保它们只被解释为纯文本。

3、在HTTP请求头中传递参数值:HTTP请求头可以包含一些参数值,例如cookie、Referer等。这些参数值可能包含特殊字符,需要进行URL编码以确保它们只被解释为纯文本。

4、在HTTP响应头中传递参数值:HTTP响应头可以包含一些参数值,例如Location、Content-Disposition等。这些参数值可能包含特殊字符,需要进行URL编码以确保它们只被解释为纯文本。

三、php对于数据的转码:

在PHP编码为GBK的情况下,接收数据时,对于?id=1'和?id=1%df'会有以下不同:

1、对于?id=1',PHP会将其解析为包含单引号字符的字符串。在GBK编码下,单引号字符的字节表示为0x27。因此,PHP会将该字符串解析为"id=1'",其中单引号被正确地保留下来。

2、对于?id=1%df',PHP会将其解析为包含特殊字符的字符串。在GBK编码下,特殊字符%df的字节表示为0xDF。因此,PHP会将该字符串解析为"id=1\xDF",其中\x表示特殊字符的十六进制表示方式。

四、特殊字符在进入mysql之后会被转码,例如 '\' 会被转作 '%5c';

补充:

1、php 可以使用 iconv() 函数对编码进行转换:

$data = iconv('UTF-8', 'GBK', $_GET['data']);
//此例子中是把 utf-8 转为 GBK 格式

2、关于%df是几个字节的字符:

%df是一个URL编码中的字符转义序列,
表示一个字节的十六进制数0xDF,即十进制数223。
在UTF-8编码中,这个字节表示一个非ASCII字符,
而在GBK编码中,它表示一个汉字或其他非ASCII字符。
需要注意的是,UTF-8和GBK都是变长编码方式,一个字符可以由一个或多个字节组成。
在UTF-8中,一个汉字通常由3个字节组成,
而在GBK中,一个汉字通常由2个字节组成。
因此,如果%df前面或后面的字符也是非ASCII字符,
那么%df就不再表示一个单独的字符,而是与前面或后面的字符一起组成一个多字节字符。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值