擅长:python、mysql、java
<p>也可以打印Unicode对象,不需要对其执行str()操作。</p>
<p>假设你真的想要一个str:</p>
<p>在执行str(u'\u2013')时,尝试将Unicode字符串转换为8位字符串。为此,您需要使用编码,即Unicode数据到8位数据之间的映射。str()的作用是使用系统默认编码,在Python 2下是ASCII。ASCII只包含Unicode的127个第一代码点,即\u0000到\u007F1。结果是您得到了上述错误,ASCII编解码器只是不知道什么是u2013(顺便说一句,它是一个长破折号)。</p>
<p>因此,需要指定要使用的编码。常见的有ISO-8859-1,最常见的是拉丁语-1,它包含256个第一代码点;UTF-8,它可以使用可变长度编码对所有代码点进行编码;CP1252,在Windows上是常见的;以及各种中文和日语编码。</p>
<p>你这样使用它们:</p>
<pre><code>u'\u2013'.encode('utf8')
</code></pre>
<p>结果是一个包含字节序列的str,该字节序列是所讨论字符的uTF8表示:</p>
<pre><code>'\xe2\x80\x93'
</code></pre>
<p>你可以打印出来:</p>
<pre><code>>>> print '\xe2\x80\x93'
–
</code></pre>