我有以下架构:
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)
源代码中的第1行或第2行(在代码utf8编码中包含文字):
# -*- coding: utf-8 -*-
如果您需要更多Python / utf8提示: http://mysql.rjweb.org/doc.php/charcoll#python