好的,我有一个硬编码的字符串,我声明如下
name = u"Par Catégorie"
我有一个#--编码:utf-8--魔术头,所以我猜它被转换成了utf-8
在这条路上,它通过
^{pr2}$我得到一个
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)
我的大部分数据是法语的,并且在CDATA节点中被正确地输出,但是这个harcoded字符串保留了。。。我不明白为什么要调用ascii编解码器。在
怎么了?在
参数名称错误?从the doc中,我可以看到关键字参数名应该是}。在
encoding
,而不是{源文件中的
coding
头告诉Python您的源代码是什么编码的。这是Python用来将unicode字符串文本(u"Par Catégorie"
)的源代码解码为unicode对象的编码。unicode对象本身没有编码;它是原始unicode数据。(在内部,Python将使用两种编码中的一种,这取决于它的配置方式,但Python代码不必担心这一点。)您得到的unicodedecoderror意味着,您正在某处混合unicode字符串和bytestring(普通字符串)。当将它们混合在一起(连接、执行字符串插值等)时,Python将尝试通过使用默认编码ASCII对bytestring进行解码,将bytestring转换为unicode字符串。如果bytestring包含非ASCII数据,这将失败,并显示错误。正在执行的操作可能在某个库中,但这仍然意味着您正在混合不同类型的输入。在
不幸的是,只要bytestrings只包含ASCII数据就可以正常工作,这意味着即使在库代码中,这种类型的错误也太频繁了。python3.x通过消除unicode字符串(3.x中只有
str
)和bytestrings(3.x中的bytes
类型)之间的隐式转换来解决这个问题相关问题 更多 >
编程相关推荐