UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)

23,756

Solution 1

Clearly, self.tableWidget.item().text() returns Unicode, and you need to use the decode method instead:

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

You really want to review the Python Unicode HOWTO to fully appreciate the difference between a unicode object and it's byte encoding.

Another excellent article is The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!), by Joel Spolsky (one of the people behind Stack Overflow).

Solution 2

Try put following code in the beginning
It's fixed my problem perfectly

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

Solution 3

teext = self.tableWidget.item(row, col).text().decode('utf-8')

Replace 'utf-8' with encoding of your text

Share:
23,756
Antoni4040
Author by

Antoni4040

Trying to create beautiful and interesting websites and possibly make some money as well...

Updated on April 01, 2020

Comments

  • Antoni4040
    Antoni4040 about 4 years

    Ι've tried all the solution that I could find, but nothing seems to work:

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

    I'm writing in greek by the way...