Hello!
2012/7/29 nan.yang wrote
> 现在有个问题实在有些困扰我,不得已像你请教一下.
>
> 我在用geoip模块时,给geoip-1.4.8的geoipIPcity.c文件中添加了一段程序,可以调用qqwry.dat显示 汉字地理信息
> 以下配置到nginx.conf中遇见一个麻烦
> geoip_country /usr/geoip/GeoIP.dat;
> geoip_city /usr/geoip/GeoLiteCity.dat;
> log_format custom $time_local | $server_name | $request_length |$bytes_sent |$geoip_city|$remote_addr;
> server {
> listen 222.222.222.222;
> location /a {
> charset utf-8;
> default_type text/plain;
> root html;
> index index.html index.htm;
> access_log logs/custom.log custom;
> echo $geoip_city;
>
> }}
>
> 网页上显示都是正确的 日志文件却是乱码
> 而且网页也是utf-8的格式
> 不知道该怎么让日志文件也显示成汉字
> 希望你能够帮我解答一下 这个问题
>
Hello!
比较新的 nginx 核心(从 nginx 1.1.6 开始)会自动对访问日志中的非 ascii
字节进行转义编码,所以并不“乱码”,只是被转义过的字节。可以给你的 nginx 核心打上下面这个补丁:
https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.2.1-log_escape_non_ascii.patch
然后在 nginx 配置文件中加上下面这一行:
log_escape_non_ascii off;
就可以禁止掉那个转义编码的功能了。
当然,如果你直接使用的是 ngx_openresty 软件包的话,默认就已经应用了这个补丁:
http://openresty.org/#Download
P.S. 同时抄送给 openresyt 邮件列表:https://groups.google.com/group/openresty 也欢迎你加入。
Best regards,
-agentzh