根据 python Unicode-HOWTO,如果我设置 LAND 环境变量,默认编码将不是 ASCII。
我在 Mountain Lion 上有 python2.7,$LANG 环境变量是“en_US.UTF-8”。运行“sys.getfilesystemencoding()”返回“utf-8”,但运行“sys.getdefaultencoding()”返回“ascii”。
当我运行以下命令时:
struct.pack('12s',u'filename\u4500abc')
它失败了:
TypeError: Struct() argument 1 must be string, not unicode
显式更改为
struct.pack('12s',u'filename\u4500abc'.encode('utf-8'))
工作。
问题是“sys.getdefaultencoding”和“sys.getfilesystemencoding”有什么区别?似乎第一个与“struct.pack”有关,第二个是什么?以及在执行“struct.pack”时如何将“utf-8”作为默认编码?