如何避免Python 3上的自动ASCII编码?

时间:2015-10-08 22:58:24

标签: python file python-3.x character-encoding ascii

我现在正在使用Python 3中的加密程序,但我遇到了一些ASCII编码问题。例如,如果我想将python中的文本文件(权限which(chr(1000))写入文本文件中,我会这样做:

a_file = open('chr_ord.txt', 'w')
a_file.write(chr(1000))
a_file.close()

我明白了:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  ...
  File "C:/Comp_Sci/Coding/printRAW.py", line 3, in <module>
    a_file.write(chr(1000))
  File "C:\WinPython-64bit-3.4.3.4\python-3.4.3.amd64\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u03e8' in position 0: character maps to <undefined>

如果我尝试:

a_file = open('chr_ord.txt', 'w')
a_file.write(ascii(chr(1000)))
a_file.close()

Python不会崩溃,但文本文件包含'\u03e8'而不是所需的Ϩ

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

Python 3的方法是在打开文件时使用encoding参数。例如。将文件编码为UTF-8

a_file = open('chr_ord.txt', 'w', encoding='utf-8')

默认值是您的系统ANSI代码页,其中不包含Ϩ字符。