我最近在Python3中深入了解了ASCII、Unicode、UTF-8、UTF-16等,但我很难理解在读/写文件时什么时候会遇到问题。
所以如果我打开一个文件:
with open(myfile, 'a') as f:
f.write(stuff)
where stuff="你好,世界!"我在写入文件时没有问题。如果我有类似的东西:non_latin='娜',我仍然可以毫无问题地写入文件。
那么,什么时候会遇到编码方面的问题呢?什么时候使用encode((和decode((?
如果操作系统的默认编码不支持所写的字符,则会遇到问题。在您的情况下,默认值(从locale.getpreferredencoding(False)
获得(可能是UTF-8。在Windows上,默认为类似cp1252
的ANSI编码,不支持中文。最好是显式的,例如使用open(myfile,'w',encoding='utf8')
。