我在波兰语中有一个单词变量,我需要将其打印到文件中:
# coding: utf-8
a = 'ilośc'
with open('test.txt', 'w') as f:
print(a, file=f)
抛出
Traceback (most recent call last):
File "C:/scratches/scratch_3.py", line 5, in <module>
print(a, file=f)
File "C:\Python34\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 '\u015b' in position 3: character maps to <undefined>
寻找现有答案(with .decode("utf-8")
或with .encode("utf-8")
)并尝试各种咒语,我最终管理了要创建的文件。
不幸的是,写的是b'ilośc'
而不是ilośc
。当我在打印到文件之前尝试解码时,我回到了初始错误和相同的回溯。
如何将包含变音符号的str
写入文件,使其成为字符串而不是字节表示?
答案 0 :(得分:1)
a = 'ilośc'
with open('test.txt', 'w') as f:
f.write(a)
您甚至可以使用二进制模式写入文件:
a = 'ilośc'
with open('test.txt', 'wb') as f:
f.write(a.encode())
答案 1 :(得分:1)
回溯表示您尝试使用'ś'
编码保存'\u015b'
(cp1252
)字符(默认为locale.getpreferredencoding(False)
- 您的Windows ANSI代码页)不代表这个Unicode字符(有超过一百万个Unicode字符,而cp1252是一个单字节编码,只能代表256个字符)。
使用可表示所需字符的字符编码:
with open(filename, 'w', encoding='utf-16') as file:
print('ilośc', file=file)