2016-04-25 43 views
0

我有以下模式:Python的編碼錯誤添加到MySQL表

CREATE TABLE language (
    language varchar(100) COLLATE utf8_bin NOT NULL, 
    PRIMARY KEY (language) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

我有下面的代碼語言添加到數據庫

self.cursor.execute("""INSERT IGNORE INTO language (language) 
        VALUES (%s)""", 
        (["PORTUGUÊS".encode('utf-8')])) 
self.conn.commit() 

表和db被編碼爲utf8_bin 。問題是......如果這個詞不存在,它會毫無問題地添加。如果存在以下錯誤給出;

UnicodeEncodeError: 'ascii' codec can't encode character u'\xca' in position 24: ordinal not in range(128) 

已經被抓我的頭幾個小時

+0

刪除編碼,這是什麼導致你的錯誤 –

+0

@Padraic已經做了,沒有任何變化 –

+0

對不起,我猜你正在使用python3? –

回答

0

在源代碼中第1,2行(有代碼文字UTF8編碼):

# -*- coding: utf-8 -*- 

如果您需要更多的Python/utf8提示: http://mysql.rjweb.org/doc.php/charcoll#python

+0

我有這個,應該提到雖然 –

+0

嗯......''CA'是latin1編碼的十六進制。如果你刪除'.encode(...)'調用會發生什麼? –

+0

沒有任何變化:\ –