zoukankan      html  css  js  c++  java
  • Python3.6 SyntaxError: 'ascii' codec can't decode byte 0xe5 in position 7: ordinal not in range(128)

    Django项目上线之后,死活无法正常运行(本地正常)

    开始排查了好久才发现是字符编码问题

    前面的小坑基本有一些,好(我)解(忘)决(了)。

    不好解决的是这个报错:

    SyntaxError: 'ascii' codec can't decode byte 0xe5 in position 7: ordinal not in range(128)

    具体表现如下:默认编码是utf-8,但是输出中文会报错。

    看到很多方法是这样:在文件开头加上,然鹅并没有用,这是这个只适用于python2

    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')

    或者这样:(这个是文件内)

    #! /usr/bin/env python   
    # -*- coding: utf-8 -*-   
      
    s = '中文'   
    s.decode('utf-8').encode('gb18030')   

    等等

    python3的默认编码方式就是utf-8,所以无需设置。

    还有一些是文件读取过程中报这个错误,解决方法是,加:

      '字符串'.encode('utf-8')

    之后看到一个解决办法是在控制台输入:

    export LC_ALL="en_US.UTF-8"

    问题解决了!

    python 可以正常输出了!django项目运行正常了!

    然而事情并没有想象的这么简单,当我把xshell关掉之后,项目挂掉了!

    (ps:这个挂掉的根本原因是没有后台运行参考:链接

    这个设置只是临时的设置。

    我突然意识到似乎这是linux系统默认语言的设置方法,

    用echo 输出中文,果然是乱码!

    于是找到了完美的解决方法:

     

    成功!重启服务器有效

    # sudo vim /etc/profile
    在末尾添上:
    
    export LC_ALL="en_US.UTF-8"
    export LANG="zh_CN.GBK"

    参考:https://blog.csdn.net/huoyunshen88/article/details/41113633

  • 相关阅读:
    网络之传输层
    局域网的物理组成
    网络基础
    RAID磁盘阵列
    mount挂载和交换分区swap
    Linux文件系统
    sed命令基础2
    sed命令基础
    LVM基础
    磁盘配额基础
  • 原文地址:https://www.cnblogs.com/donke/p/10475600.html
Copyright © 2011-2022 走看看