擅长:python、mysql、java
<p>你在用<a href="http://docs.python.org/2/library/codecs.html#codecs.open" rel="nofollow">^{<cd1>}</a>?Python 2.7的内置<code>open()</code>不支持特定的编码,这意味着您必须手动对非ascii字符串进行编码(正如其他人所指出的那样),但是<code>codecs.open()</code>支持这种编码,并且可能比手动对所有字符串进行编码更容易插入。</p>
<hr/>
<p>由于您实际使用的是<code>codecs.open()</code>,按照您添加的代码执行,并且在自己进行了一些查找之后,我建议尝试打开编码为<code>"utf-8-sig"</code>的输入和/或输出文件,该文件将自动处理UTF-8的BOM(请参阅<a href="http://docs.python.org/2/library/codecs.html#encodings-and-unicode" rel="nofollow">http://docs.python.org/2/library/codecs.html#encodings-and-unicode</a>,在本节底部附近),我认为这仅对输入文件有意义,但如果这些组合(utf-8-sig/utf-8、utf-8/utf-8-sig、utf-8-sig/utf-8-sig)都不起作用,那么我认为最有可能的情况是,您的输入文件使用BOM以不同的Unicode格式编码,因为Python的默认utf-8编解码器将BOM解释为常规字符,这样输入就不会有问题,但输出可以。</p>
<hr/>
<p>刚刚注意到,但是。。。当您使用<code>codecs.open()</code>时,它需要一个Unicode字符串,而不是编码的字符串;请尝试<code>x = unicode(actionT(splitList[0], splitList[1]))</code>。</p>
<p>尝试解码unicode字符串时也可能发生错误(请参见<a href="http://wiki.python.org/moin/UnicodeEncodeError" rel="nofollow">http://wiki.python.org/moin/UnicodeEncodeError</a>),但我认为除非<code>actionT()</code>或列表拆分对unicode字符串执行某些操作,使其被视为非unicode字符串,否则不会发生这种情况。</p>