UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte

iMath redstone-cold at 163.com
Thu Dec 6 05:07:51 EST 2012


the following code originally from http://zetcode.com/databases/mysqlpythontutorial/
within the "Writing images" part .


import MySQLdb as mdb
import sys

try:
    fin = open("Chrome_Logo.svg.png",'rb')
    img = fin.read()
    fin.close()

except IOError as e:

    print ("Error %d: %s" % (e.args[0],e.args[1]))
    sys.exit(1)


try:
    conn = mdb.connect(host='localhost',user='testuser',
       passwd='test623', db='testdb')
    cursor = conn.cursor()
    cursor.execute("INSERT INTO Images SET Data='%s'" % \
        mdb.escape_string(img))

    conn.commit()

    cursor.close()
    conn.close()

except mdb.Error as e:

    print ("Error %d: %s" % (e.args[0],e.args[1]))
    sys.exit(1)


I port it to python 3 ,and also change 
fin = open("chrome.png") 
to 
fin = open("Chrome_Logo.png",'rb')
but when I run it ,it gives the following error :

Traceback (most recent call last): 
  File "E:\Python\py32\itest4.py", line 20, in <module>
    mdb.escape_string(img))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte

so how to fix it ?



More information about the Python-list mailing list