在一个阿里云的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
至此,解决问题,真是神坑