gpt4 book ai didi

python - 为什么 Python 不从 Latin Extended-A 写入字符(写入文件时出现 UnicodeEncodeError)?

转载 作者:行者123 更新时间:2023-11-28 22:11:38 25 4
gpt4 key购买 nike

强制性介绍,指出我做了一些研究

这看起来应该是直截了当的(如果找到合适的目标问题,我很乐意将其作为重复项关闭),但我对字符编码以及 Python 如何处理它们不够熟悉,因此我自己无法解决。冒着看起来很懒惰的风险,我会很好地注意到答案可能在下面的一个链接中,但我还没有在我的阅读中看到它。

我引用了一些文档:Unicode HOWTO , codecs.py docs

我还查看了一些旧的投票率很高的 SO 问题:Writing Unicode text to a text file? , Python, Unicode, and the Windows console


问题

这是一个 MCVE演示我的问题的代码示例:

with open('foo.txt', 'wt') as outfile:
outfile.write('\u014d')

回溯如下:

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "C:\Users\cashamerica\AppData\Local\Programs\Python\Python3\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 '\u014d' in position 0: character maps to <undefined>

我很困惑,因为代码点 U+014D 是 'ō',一个分配的代码点,LATIN SMALL LETTER O WITH MACRON ( official Unicode source )

我什至可以将字符打印到 Windows 控制台(但它呈现为普通的“o”):

>>> print('\u014d')
o

最佳答案

您正在使用 cp1252 作为默认编码,其中不包括 ō

使用显式编码写入(和读取)您的文件:

with open('foo.txt', 'wt', encoding='utf8') as outfile:
outfile.write('\u014d')

关于python - 为什么 Python 不从 Latin Extended-A 写入字符(写入文件时出现 UnicodeEncodeError)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55558785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com