nginx - nginx的访问日志的编码格式是什么?

Nginx的access.log的编码是什么?我正在尝试遍历文件,但我的脚本 raises an exception “UTF-8 中的无效字节序列”当它发现对我的服务器的请求中包含中文/泰文字符时。

最佳答案

HTTP 协议(protocol)请求主要是 ASCII,数据字段允许是任何八位字节。参见 Which encoding is used by the HTTP protocol? .

Nginx 的错误和访问日志将反射(reflect)这一点。

我对来自一个小型北美站点的 450,000 条记录的经验表明,除了一条记录外,所有记录都可以无误地解码为 ASCII。该记录包含 4 个连续字节 (b'\xb8E\x8c\xde'),它们是无效的 UTF-8 但有效的 big5hkscs(Python 的繁体中文编解码器)产生了两个字形。

参见 How can I programmatically find the list of codecs known to Python?获取用于对非 ASCII 位进行暴力攻击的编解码器名称列表。

将二进制日志记录解码为 ASCII,使用 '?'替换错误,足以满足我的需求。

https://stackoverflow.com/questions/33986569/

相关文章:

java - 如何使用 Mysql JDBC 驱动连接 Android 和 MySQL

javascript - 如何实现用户可自定义的键盘快捷键(在 javascript 中/在网络上)

laravel - 如何通过 Storage Facade(在 Laravel 5 中)获取下载文件

css - 跨浏览器字体大小

java - 玩2.4,报错: package play. *不存在

git - 删除标记但未 merge 的 Git 分支是否安全?

c++ - = make_pair 是否调用复制构造函数?

javascript - jsPDF addHTML 获取滚动元素的全部内容

reactjs - ReactJS 中的嵌入式文档查看器控件

r - 升级 R/R Studio 后出现 fatal error (无效的事件开发人员路径)