处理Centos6和Centos7下,python3处理中文的神坑

by Liu Yue/2019-04-10
  在一个阿里云的ecs服务器上,安装了centos6.5,然后部署Django2.0.4+python3.7.2,处理编码格式为UTF-8的HTTP请求,但奇怪的发现,将bytes类型的请求内容decode的时候会报解码错误

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)




  同样的程序,在windows Macos centos5.5 都没问题

  网上一般的解决方案无非就是load(sys)或者代码加上# -- coding: utf-8 --这种,但这是python2时代的解决方案,完全不起作用


  还有一种方式是改系统编码的方式/etc/sysconfig/i18n 也不起作用


  最后真正能解决此问题的方式是:

  找到python的安装目录的编码文件夹
  cd /usr/local/python3.7.2/encodings/ 
  备份一下ascii的编码文件
  mv ascii.py ascii.py.bak 
  将utf8编码复制成ascii的          
  cp utf_8.py ascii.py

  至此,解决问题,真是神坑