将一个json文件放到腾讯云后台服务器发布出来后,浏览器端中文显示出现了乱码,折腾个把小时才解决,过程记录一下
json文件生成问题
最开始猜测json文件生成有问题,文件是通过python代码生成的,python里经常会出现编码等问题,json文件生成代码如下
jsondata = json.dumps(data_list, ensure_ascii=False)
一些博客说只要设置ensure_ascii=False,json就能显示中文,代码中设置了,因此排除json文件问题。
centos7显示中文问题
猜测是centos7服务器不支持中文,使用echo $LANG查看当前使用的系统语言,果然是英语
接下来就配置centos7支持中文显示
1.查看系统是否安装有中文语言包
locale -a | grep "zh_CN" 命令含义:列出所有可用的公共语言环境的名称,包含有"zh_CN"
若出现图中所示几项,那么说明系统中已经安装了语言包,不需要在安装。含义是:{语言代号_国家代号}.{字符集}
zh:是中文的代号。
CN:是中国的代号。
gb18030、gb2312、utf8、gbk:字符集
2.如果没有安装中文语言包,那么安装一下中文语言包
yum groupinstall "fonts" (或者 yum install kde-l10n-Chinese)
注意:部分博客提到使用yum groupinstall chinese-support,在centos7下该命令不可用
3.查看当前语言
locale
可以看到我的系统当前显示的语言中并没有中文。
4.修改i18n国际化和locale.conf本土化配置文件
虽然安装了中文语言包但本机的语言环境并不是中文,先修改i18n配置文件
[root@iZj6cbstl2n6r280a27eppZ sysconfig]# vim /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
LC_ALL="zh_CN.UTF-8"
[root@iZj6cbstl2n6r280a27eppZ sysconfig]# source /etc/sysconfig/i18n
[root@iZj6cbstl2n6r280a27eppZ sysconfig]# vim /etc/locale.conf
LANG="zh_CN.UTF-8"
[root@iZj6cbstl2n6r280a27eppZ sysconfig]# source /etc/locale.conf
这样改好之后json乱码还是存在。
json文件编码问题
上面两种方法弄完还是乱码,再想可能还是json文件编码问题,用记事本打开json,点击 文件->另存为
在弹出的另存为对话框中,可以看到文件的编码格式,发现是ANSI编码,改为UTF-8编码,保存
上传服务器后,乱码问题最终得以解决!