centos7发布json中文显示乱码

将一个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"

img

若出现图中所示几项,那么说明系统中已经安装了语言包,不需要在安装。含义是:{语言代号_国家代号}.{字符集}

zh:是中文的代号。

CN:是中国的代号。

gb18030、gb2312、utf8、gbk:字符集

2.如果没有安装中文语言包,那么安装一下中文语言包

yum groupinstall "fonts" (或者 yum install kde-l10n-Chinese)

注意:部分博客提到使用yum groupinstall chinese-support,在centos7下该命令不可用

3.查看当前语言

locale

img

  可以看到我的系统当前显示的语言中并没有中文。

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编码,保存

查看及修改文件的编码格式

上传服务器后,乱码问题最终得以解决!

原文地址:https://www.cnblogs.com/weiweiting/p/15410469.html