擅长:python、mysql、java
<p>这在PyDev中有效,因为它将Python本身配置为在控制台(通常是UTF-8)的编码中工作。在</p>
<p>如果转到运行配置(run>;run configurations),然后在“common”选项卡上说希望编码为ascii,那么可以在PyDev中重现相同的错误。在</p>
<p>发生这种情况是因为您的单词是一个字符串,而您要替换为unicode字符。在</p>
<p>希望下面的代码能为您提供一些启示:</p>
<p>所有这些都将ascii作为默认编码:</p>
<pre><code>>>> 'íã'.replace(u"\u2019", u"\x27")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa1 in position 0: ordinal not in range(128)
</code></pre>
<p>但是,如果您使用unicode来完成这些工作,那么它是有效的(如果您希望处理字符串而不是unicode,则可能需要将其编码回预期的编码)。在</p>
^{pr2}$
<p>因此,您可以在替换之前将字符串设为unicode</p>
<pre><code>>>> 'íã'.decode('cp850').replace(u"\u2019", u"\x27")
u'\xed\xe3'
</code></pre>
<p>或者你可以对替换字符进行编码</p>
<pre><code>>>> 'íã'.replace(u"\u2019".encode('utf-8'), u"\x27".encode('utf-8'))
'\xa1\xc6'
</code></pre>
<p>但是请注意,您必须知道您在任何地方使用的实际编码是什么(因此,尽管我在示例中使用的是cp850或utf-8,但它可能与您必须使用的编码不同)</p>