ubuntu / python编码坑一则
Posted | archive
一个django文件上传老是出现unicode error
UnicodeEncodeError: 'ascii' codec can't encode character u'\uWTFH' in position 0: ordinal not in range(128)
折腾了好久 reload(sys) sys.setdefaultencoding() locale.setdefaultlocale()
后来发现是os.environ["LANG"]居然为空。这尼玛为毛啊。
LANG为空也就算了,发现另外一个神奇的bug:
$ export LC_ALL=en_US.UTF8
$ python -c "print __import__('locale').getdefaultlocale()"
('en_US', 'UTF8')
$ export LC_ALL=en_US
$ python -c "print __import__('locale').getdefaultlocale()"
('en_US', 'ISO8859-1')
$ export LANG=
$ python -c "print __import__('locale').getdefaultlocale()"
('en_US', 'ISO8859-1')
ISO8859-1 就是臭名昭著的latin-1编码也就是最脑残不过的 ascii 编码。反生产力啊。
感谢 killkeeper :D
Comments