python - 如何正确地将unicode字符写入文件
python - How to write unicode characters to files correctly
如果我运行下面的代码:
text = 'سلام عزیزم! عزیزم سلام!'
with open('temp.txt', 'w') as out_file:
print(text)
out_file.write(text)
with open('temp.txt', 'r') as in_file:
print(in_file.read())
我得到这个输出:
Traceback (most recent call last):
سلام عزیزم! عزیزم سلام!
File "Z:/my files/projects/programing/python/courseAssist/gui.py", line 190, in <module>
out_file.write(text)
File "C:\Users\aran\Anaconda3\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-3: character maps to <undefined>
我该如何解决?
指定编码encoding='utf-8'
:
text = 'سلام عزیزم! عزیزم سلام!'
with open('temp.txt', 'w', encoding='utf-8') as out_file:
print(text)
out_file.write(text)
with open('temp.txt', 'r', encoding='utf-8') as in_file:
print(in_file.read())
如果我运行下面的代码:
text = 'سلام عزیزم! عزیزم سلام!'
with open('temp.txt', 'w') as out_file:
print(text)
out_file.write(text)
with open('temp.txt', 'r') as in_file:
print(in_file.read())
我得到这个输出:
Traceback (most recent call last):
سلام عزیزم! عزیزم سلام!
File "Z:/my files/projects/programing/python/courseAssist/gui.py", line 190, in <module>
out_file.write(text)
File "C:\Users\aran\Anaconda3\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-3: character maps to <undefined>
我该如何解决?
指定编码encoding='utf-8'
:
text = 'سلام عزیزم! عزیزم سلام!'
with open('temp.txt', 'w', encoding='utf-8') as out_file:
print(text)
out_file.write(text)
with open('temp.txt', 'r', encoding='utf-8') as in_file:
print(in_file.read())