<p>这是用于商标符号的unicode:<a href="http://www.marathon-studios.com/unicode/U2122/Trade_Mark_Sign" rel="nofollow">http://www.marathon-studios.com/unicode/U2122/Trade_Mark_Sign</a></p>
<p>由于您正在抓取web,您可能会看到更多此类错误,因此替换它可能适用于此页,但不能用其他符号替换其他页。</p>
<p>csv模块正在将unicode转换为ascii,然后再编写它。我建议你在发短信之前也这样做,自己把它清理干净,也就是说,不要</p>
<pre><code>htmlTxt.encode('utf-8')
</code></pre>
<p>做</p>
<pre><code>htmlTxt.encode('ascii', 'ignore')
</code></pre>
<p>然后检查文本,看它是否适合您的目的。</p>
<p><strong>编辑</strong></p>
<p>以下是我在Python 3中的输出:</p>
<pre><code>>>> u'\u2122'.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\u2122' in position 0: ordinal not in range(128)
>>> u'\u2122'.encode('ascii', 'ignore')
b''
</code></pre>
<p>和Python2.6:</p>
<pre><code>>>> u'\u2122'.encode('ascii')
Traceback (most recent call last):
File "<pyshell#92>", line 1, in <module>
u'\u2122'.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 0: ordinal not in range(128)
>>> u'\u2122'.encode('ascii', 'ignore')
''
</code></pre>