擅长:python、mysql、java
<pre><code>print myvar2['encoding']
</code></pre>
<hr/>
<p>现在对于添加的相关信息:<code>chardet</code>是检测编码的尝试。它不是100%可靠,有时会失败。不过,这是最好的,因为可靠的编码检测是不可能的。如果<code>chardet</code>失败,只需为用户提供一种指定编码的方法。在</p>
<p>你不能阅读你不知道特定编码类型的文本。这是不可能的,因为相同的字节序列可能意味着不同编码的不同字符。换句话说,编码是不明确的。<code>chardet</code>只是猜测。它可以而且在野外也会失败。最好也是唯一可靠的方法是询问生成字符串的人首先使用了哪种编码。在</p>
<hr/>
<p><em><strong>编辑:</strong></em>
对于您的场景,保持理智的唯一方法是<strong>询问生成字符串的人使用了什么编码。你这么说的</p>
<blockquote>
<p><em>"The input coming in is variable and
not in my control."</em></p>
</blockquote>
<p>如果这是真的,那么<em>您就无法</strong>正确读取输入</em>。如果事先不知道文本输入使用的是哪种编码,就无法从一堆字节中读取文本输入。这是不可能的。根据定义。在</p>
<p>请询问生成bytestrings的人向您提供用于生成bytestrings的<strong>编码</strong>,以及bytestrings本身,这样您就可以理解它们了。<strong>如果没有编码,bytestring只不过是一块字节</strong>,您无法知道其中有哪些字符。就像拥有一堆数据却不知道如何解释它们。在</p>
<p>字节是从哪里来的?为什么你不能控制用来生成数据的编码?数据提供者是否知道他们提供的数据由于您无法正确解释而变得无用?在</p>
<p>我再重复一遍,让大家明白:你不可能在不知道生成字节的编码的情况下,正确、可靠地将一堆字节作为文本读取。它不可能可靠地工作。你需要和制作人达成某种协议,这样你就能知道编码了。在</p>