今天突然发现有个服务器上面的php输出的日志乱码,然后我查看php也是乱码,我下载windows本地,显示正常,我ctrl+c然后ctrl+v到服务器,还是乱码,各种转换,都不行,
查看xshell编码,utf-8的
查看系统编码echo $LANG,显示是en_US.UTF-8
再用file命令查看php,提示是个php script文件,然后机智的我直接删掉了<?php >
,只保留php内容,然后file查看,提示是utf8的,这么就尴尬了,
后来发现有个修改系统编码的博文是这么说的
vi /etc/profile
export LC_ALL="zh_CN.GBK"
export LANG="zh_CN.GBK"
然后我赶紧查看了下echo $LC_ALL 显示en_US
根据网上的另一个帖子是这么说的
locale的设定:
LC_ALL和LANG优先级的关系: LC_ALL > LC_* >LANG
1、如果需要一个纯中文的系统的话,设定LC_ALL= zh_CN.XXXX,或者LANG=zh_CN.XXXX都可以。
2、如果只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以了。
3、假如什么也不做的话,也就是LC_ALL,LANG和LC_*均不指定特定值的话,系统将采用POSIX作为lcoale,也就是C locale。
所以这个系统根本不支持中文,
虽然$LANG=en_US.UTF-8
把LC_ALL设置为空或者设置为en_US.UTF-8,不过看了下其他系统,我还是设置为了空