webserver日志中\xCF\xE3\xB8\xDB\xCA\xAE\xB4\xF3\xCE\xC4\xBB\xAF\xB7\xFB\xBA\xC5这种形式原因及处理
如果在webserver日志里直接看到这种内容:\EF这种格式是因为发送过来的http请求包里,client端使用了二进制汉字编码,没有做urlencode。和具体的编码种类无关,就是原始的十六进制编码值。
处理的方法:把\x替换为%,然后做urldecode,再识别编码。
如果做了上述处理仍然看到这种结果,有可能数据原始内容(例如query)就是这个。
如下是用php做的处理代码
<?php
// 对\xCF\xE3\xB8\xDB\xCA\xAE\xB4\xF3\xCE\xC4\xBB\xAF\xB7\xFB\xBA\xC5这个格式数据做处理
function unknowWordDecode($unknowWords) {$unknowWords = str_replace("\x", "%", $unknowWords);$unknowWords = urldecode($unknowWords);$encoding = mb_detect_encoding($unknowWords, array("UTF-8", "GBK","gb2312"), true);if($encoding != "UTF-8") {$unknowWords = mb_convert_encoding($unknowWords,'utf-8','gb2312');}return $unknowWords;
}
其中,第6行使用mb_detect_encoding函数进行编码识别,当字符串较短时,mb_detect_encoding会出现误判。这不算是一个bug,当需要处理文字类型时,建议优先将最大可能性的类型放在前面。
如下为php.net中摘抄的参数列表:
string mb_detect_encoding ( string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]] )
str 待检查的字符串。
encoding_list 是一个字符编码列表。 编码顺序可以由数组或者逗号分隔的列表字符串指定。
如果省略了 encoding_list 将会使用 detect_order。
strict 指定了是否严格地检测编码。 默认是 FALSE。
在实际的处理中建议对输出的结果人工判断一下,准确率更好一些。
webserver日志中\xCF\xE3\xB8\xDB\xCA\xAE\xB4\xF3\xCE\xC4\xBB\xAF\xB7\xFB\xBA\xC5这种形式原因及处理相关推荐
- python函数参数定义_python函数定义中的5种参数
python函数参数定义 Python函数定义中的5种参数类型: (5 Types of Arguments in Python Function Definition:) default argum ...
- 记录到日志中的异常栈缺失
.NET项目中有这样一个场景: 使用反射处理所有业务调用,在反射调用点使用try-catch集中处理异常,并将异常信息记录到日志.其中日志记录是异步的. 问题: 记录到日志中的异常的StackTrac ...
- nginx日志中添加请求的response日志
换个新公司,做一些新鲜的事情,经过一天的琢磨,终于成功添加response日志 在nginx的日志中添加接口response的日志 由于此功能在nginx内置的功能中没有,需要安装第三方模块ngx_l ...
- linux 统计日志数量总,shell统计日志中时间段内匹配的数量的方法
shell统计日志中时间段内匹配的数量的方法,有需要的朋友可以参考下. 假设日志文件mtasvr.log格式如下: T:24583088(04:02:06)[root:Info] 6KqowLDLAg ...
- 使用awk,sort和uniq从ATS访问日志中统计出异常链接域名的次数排名
在运维过程中,发现portal中出现流量异常曲线, 就从排查ATS的访问日志中的异常域名开始,下面是我截获的对应时段的访问日志截图 发现里面有502,403等异常响应,我们将这段访问日志文件记为exc ...
- 使用cat,awk和sort命令从nginx访问日志中统计user-agent类型
业务场景描述如下: 我有一个Nginx的web服务器,需要从统计日志中统计有哪些类型的设备终端和浏览器访问了我的网站. 访问日志中的每条记录是这样的: 使用下面的命令得到user-agent所在的字段 ...
- mysql 对部分表binlog_MySQL抑制binlog日志中的BINLOG部分的方法
1.mysqlbinlog之base64-output参数 --base64-output=value This option determines when events should be dis ...
- python编写脚本方法_使用Python编写提取日志中的中文的脚本的方法
由于工作需要在一大堆日志里面提取相应的一些固定字符,如果单纯靠手工取提取,数据量大,劳心劳力,于是自然而然想到了用Python做一个对应的提取工具,代替手工提取的繁杂,涉及中文字符,正则表达式不好匹配 ...
- 安全事件日志中的登录事件
windows日志ID 表 1:安全事件日志中的登录事件 事件 ID 说明 528 用户成功登录计算机. 529 用户使用系统未知的用户名登录,或已知用户使用错误的密码登录. 530 用户帐户在许可的 ...
最新文章
- 在无人驾驶汽车大规模应用以前,自动驾驶叉车已经逐步潜入制造业
- Java Script Closure(js闭包)-浅谈
- QT的QMediaPlayer类的使用
- ScrollView HorizontalScrollView
- 点击input框,添加阴影效果
- Windows Phone 7 系统主题颜色RGB和Hex值
- CentOS7 防火墙规则 (firewalld)
- 徐州工程学院计算机报名,2019年3月江苏徐州工程学院计算机等级考试报名时间...
- [源码和报告分享]基于C++实现的运动会统分系统
- 为什么街头篮球总提示服务器维护,我玩街头篮球,但这几天它总是说连接不上服务器怎么回事?...
- python编写回文程序上海自来水来自海_回文句式初探:“上海自来水来自海上”...
- Kubernetes -K8S安装部署及SpringCloud应用
- 全国大江大河实时水情数据下载
- 创业教父马云的经典语录
- Leetcode:Singel Number
- 计算机分子模拟聚乙烯,高分子物理虚拟实验讲义
- CDN加速,App与Big-man
- 销 售 具 备 10 条
- matlab 数组索引必须为正整数或逻辑值
- C语言求高次方的尾数