如何使用变音符号将文件打印到文件中?

时间:2016-04-25 18:57:25

标签: python python-3.x unicode utf-8

我在波兰语中有一个单词变量,我需要将其打印到文件中:

# 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写入文件,使其成为字符串而不是字节表示?

2 个答案:

答案 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)