我创建了一个函数convert()
,它将pdf转换为html并输出html作为字符串。
当我这样做时:
print(convert())
它有效,但是当我尝试将结果写入文件时:
f.write(convert())
我明白了:
UnicodeEncodeError: 'charmap' codec can't encode character '\ufb01' in position 978: character maps to <undefined>
在pycharm
我的项目编码器设置为UTF-8,我有一个
# -*- encoding: utf-8 -*-
在文件的开头。关于我为何会收到此错误的任何想法?
答案 0 :(得分:3)
Python版本有所不同。这是Python 3.6:
Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('\ufb01')
fi
>>> with open('out.txt','w') as f:
... f.write('\ufb01')
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "D:\dev\Python36\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 '\ufb01' in position 0: character maps to <undefined>
在这种情况下,原因是Windows上的Python 3.6使用Unicode API写入控制台,因此它运行良好。使用默认编码打开文件使用我的系统上的代码页1252,该代码页不支持写入的Unicode字符。使用支持所有Unicode字符的编码:
>>> with open('out.txt','w',encoding='utf8') as f:
... f.write('\ufb01')
...
1