【问题标题】:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)UnicodeEncodeError:“ascii”编解码器无法对位置 0-6 中的字符进行编码:序数不在范围内(128)
【发布时间】:2012-08-05 15:01:16
【问题描述】:

我已经尝试了所有我能找到的解决方案,但似乎没有任何效果:

teext = str(self.tableWidget.item(row, col).text())

顺便说一句,我是用希腊语写的……

【问题讨论】:

    标签: python pyqt ascii encode


    【解决方案1】:

    很明显,self.tableWidget.item().text() 返回 Unicode,你需要改用decode 方法:

    self.tableWidget.item(row, col).text().encode('utf8')
    

    您真的很想查看Python Unicode HOWTO 以充分了解 unicode 对象与其字节编码之间的区别。

    另一篇出色的文章是 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!),作者是 Joel Spolsky(Stack Overflow 背后的人之一)。

    【讨论】:

    • 好吧,我不再收到错误,但是当我将文本写入 .xls 文件时,当我打开 .xls 文件时,它什么也没有显示...
    • 阅读我的回答中包含的文章;你需要找出你需要使用什么编码。
    • teext = unicode(self.tableWidget.item(row, col).text()) 似乎解决了问题...无论如何,非常感谢您的帮助...
    【解决方案2】:

    尝试将以下代码放在开头
    完美解决了我的问题

    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    

    【讨论】:

      【解决方案3】:
      teext = self.tableWidget.item(row, col).text().decode('utf-8')
      

      用您的文本编码替换“utf-8”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-22
        • 1970-01-01
        相关资源
        最近更新 更多