zoukankan      html  css  js  c++  java
  • 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编码,保存

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

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

  • 相关阅读:
    面试官:重写 equals 时为什么一定要重写 hashCode?
    MyBatis 中为什么不建议使用 where 1=1?
    面试官:方法重写时需要注意哪些问题?
    Java中List排序的3种方法
    面试官:this和super有什么区别?this能调用到父类吗?
    面试官:int和Integer有什么区别?为什么要有包装类?
    HashMap 中的一个“坑”!
    Java 中接口和抽象类的 7 大区别!
    List 去重的 6 种方法,这个方法最完美!
    面试官:如何实现 List 集合去重?
  • 原文地址:https://www.cnblogs.com/weiweiting/p/15410469.html
Copyright © 2011-2022 走看看