kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

url 中 \xe6 %E6 两种解码方式

https://blog.csdn.net/YungGuo/article/details/110197818

apache log 中,参数之前的url是 \x , 参数是 %

例如

1
index/\xe6\x89\xa7\xe8\xa1\x8c\xe7\xbb\x93\xe6\x9e\x9c\xe5\xa6\x82\xe4\xb8\x8b?arg=%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C%E5%A6%82%E4%B8%8B

%

如果是 % 直接用 urldecode

1
urldecode($v);

\x

1
2
 \xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c
 中文是: 你好世界

上面这个是utf-8编码,但数据类型是字符串类型,而不是bytes类型的utf-8编码。

这样会导致一个结果:如果直接输出,显示的是乱码,也不能使用decode进行utf-8解码得到中文。

可能有人会说,既然得到的是utf-8编码,在前面加上 “ b ” ,字符串就是bytes类型了,再利用decode进行解码不就可以得到中文吗?但显然,这是行不通的,你不可能去手动一个个添加,那有没有其他方法呢?

答案肯定是有的,既然知道这个字符串是utf-8编码的,那么我换种方式,只要将字符串中的 “ \x ” 改为 “ % ” 利用urllib中的unquote方法解码就可以得到中文了,因为url中的中文utf-8编码和这里的区别就是url中编码是%开头。

1
urldecode(preg_replace('/\\\x([0-9a-fA-F]{2})/', '%$1', $v));

language, web

« grep如何匹配制表符 html url 编解码,特殊字符等 »