我试图解析XML文件并将内容写入纯文本文件。到目前为止,这个程序一直工作到一个表情符号字符,然后Python抛出以下错误:
UnicodeEncodeError: 'charmap' codec can't encode characters in position 177-181: character maps to <undefined>我到了错误位置,并在XML文件中找到了以下表情符号:

我的问题是如何将它们编码到unicode,或者在写入文件时完全删除/忽略它们。
当我将print()输出到控制台时,它的输出非常完美,但是在写入文件时会抛出一个错误。
我搜索过Google和这里,但我得到的唯一答案是它们已经被编码到unicode了。你看到的是我的,文字?我不确定我说得对不对。
此外,我正在处理的XML文件具有以下格式:
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<?xml-stylesheet type="text/xsl" href="sms.xsl"?>
<smses count="1">
<sms protocol="0" address="+00000000000" date="1346772606199" type="1" subject="null" body="Lorem ipsum dolor sit amet, consectetur adipisicing elit," toa="null" sc_toa="null" service_center="+00000000000" read="1" status="-1" locked="0" date_sent="1346772343000" readable_date="Sep 4, 2012 10:30:06 AM" contact_name="John Doe" />
</smses>发布于 2014-05-19 17:44:33
(编辑:这个答案与Python2.x有关,而不是Python3.x)
目前,您正在使用默认编码将unicode字符串写入文件,这不支持表情符号(或者,就这一点而言,您可能真的想要大量字符)。您可以使用支持所有unicode字符的UTF-8编码来编写。
与其执行file.write( data ),不如尝试file.write( data.encode("utf-8") )。
https://stackoverflow.com/questions/23743878
复制相似问题