ラテン語以外のロケールが設定されている場合IOError.strerror
、Python 2.7 では非 Unicode になります。
import locale
locale.setlocale(locale.LC_ALL, '')
print locale.getlocale(locale.LC_MESSAGES)
try:
open('/asdasd', 'w')
except IOError as e:
print e.strerror
print repr(e.strerror)
print unicode(e) # boom
ランニング:
LANG=fr_FR.utf8 python test.py
出力:
('fr_FR', 'UTF-8')
Permission non accordée
'Permission non accord\xc3\xa9e'
Traceback (most recent call last):
File "test.py", line 11, in <module>
print unicode(e)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 32: ordinal not in range(128)
OS のエラー メッセージはstrerror
、最初に Unicode に変換せずにそのまま保存されているようです。これは手動ですべてをデコードせずに回避できますException
か?