擅长:python、mysql、java
<p>您可能希望跳过重新编码的步骤,因为<code>lxml.html</code>将自动使用源文件中指定的编码,而且只要它最终是有效的unicode,也许就没有理由关心它最初是如何编码的。在</p>
<p>除非你的项目是如此的小和非正式,你可以确保你永远不会遇到8位字符串(即,它总是7位ASCII,英语没有特殊字符),明智的做法是尽早将文本转换成unicode格式(比如在检索之后),并保持这种格式,直到您需要将其序列化以写入文件或通过套接字发送。在</p>
<p>您看到<code><type 'lxml.etree._ElementUnicodeResult'></code>的原因是<code>lxml.html.fromstring()</code>正在自动为您执行解码步骤。注意,这意味着上面的代码对于用UTF-16编码的页面不起作用,例如,因为8位字符串将用UTF-8编码,但html仍将显示UTF-16</p>
<pre><code><meta http-equiv="Content-Type" content="text/html; charset=utf-16" />
</code></pre>
<p>lxml将尝试根据utf-16编码规则对字符串进行解码,在短时间内引发一个异常。在</p>
<p>如果要将输出序列化为<strong>UTF-8</strong>编码的8位字符串,则只需:</p>
^{pr2}$