即使`print(chr(128))`正常工作,为什么`file.write(chr(128))`在Python中返回错误?

时间:2018-08-06 12:56:44

标签: python character-encoding character byte fwrite

问题与标题完全相同。我的问题是,对于N = 128,file.write(chr(N))失败并返回错误:UnicodeEncodeError: 'charmap' codec can't encode character '\x80'.

我认为print()中允许的某些操作会在file.write()中返回错误,这很奇怪。但是,对于N = 255而言,它不会返回错误,因此,并非所有N> 127都失败。

此示例的整个代码为:

N=128

print(chr(N)) #This works just fine.

file=open('output.txt','w')
file.write(chr(N))  #This one returns errors!
file.close() 

具有以下内容:

file=open('output.txt','w',encoding="utf-8")
file.write(chr(N)) #No error but output.txt is empty!
file.close()

它没有错误,但是输出文件为空。

我的python版本是Anaconda 3.6.5

1 个答案:

答案 0 :(得分:0)

请确保您使用utf-8编码打开文件:

file = open('file_name.txt', 'w', encoding="utf8", newline='')

此解决方案适用于python3.x。