我的代码可能会出错俄语消息。
例如:
Неверно составлен limit
但是错误.log包含:
xd0x9dxd0xb5xd0xb2xd0xb5xd1x80xd0xbdxd0xbe xd1x81xd0xbexd1x81xd1x82xd0xb0xd0xb2xd0xbbxd0xb5xd0xbd limit
有没有办法正常地读取尾.log错误(使用 sed
或其他东西)?
或者我如何"告诉"apache不编码utf符号错误.log?
经过几次尝试,我找到了解决方案。
echo -e
- 获得十六进制的 UTF insead。
tailf ... | while read line; do command; done;
-- 逐行读取尾部的输出
read -r
-- 避免转换转义序列。
因此,结果是:
tailf /var/log/apache2/error.log | while read -r line; do echo -e "$line"; done;
我认为您可能需要在自己的情况下使用 enca,如果您不确切知道您拥有哪种类型的输出编码,您也可以使用其中可用的选项,例如-g, --guess
你可以从吉托里乌斯那里得到它。
一个简单的描述,我在这里解释:
如果你足够幸运,你只需要知道两件事是: 命令
enca FILE
要了解您的文件使用哪种类型的编码,您可以尝试:
enconv FILE
显然,您需要将FILE替换为错误日志。之后,您可以简单地尝试以下内容:
tail -20f /path/to/your/file/error_log
以下载您的文件。