UnicodeEncodeError:'ascii' 编码无法在位置 126 编码字符 u'\u2019':范围不在 (128) 之内

7 投票
1 回答
9302 浏览
提问于 2025-04-17 08:39

好的,我看了很多类似的问题,我觉得我按照建议做了,但我的代码还是不行。

我解析了一个xml文件。我在这里看到输出现在是unicode格式。我正在使用csv写入器把输出写入一个文件。

所以,在我的代码里,我在使用writerow之前尝试过用utf-8编码。为什么我在writerow时还是会出错?我的警告“unicode!!!”直到这个错误发生才会出现(我在多个文件上运行这个,绝大多数都能正常工作)。其实,我不明白为什么writerow会尝试使用ascii,难道它不应该期待utf-8吗?我还特意把编码函数里的utf-8换成ascii试了一下,结果还是一样。请帮帮我!!!

        try:

           mystring=elem.find('./'+r2+'Description').text


           if isinstance(mystring, unicode):
               print("unicode!!!")
               mystring.encode('utf-8','ignore')
               datalist.append(mystring)
           else:    
               datalist.append(mystring)
        except AttributeError:
           datalist.append('No text')  

        c.writerow(datalist)

1 个回答

9

当你调用 mystring.encode(... 时,它并不是直接修改原来的字符串,而是返回一个新的字符串。

撰写回答