Python MySQLdb可以';初始化字符集utf-8错误

Python MySQLdb可以';初始化字符集utf-8错误,python,mysql,utf-8,character-encoding,iso-8859-1,Python,Mysql,Utf 8,Character Encoding,Iso 8859 1,我正在尝试使用MySQLdb驱动程序将一些阿拉伯语单词插入我的hanswehr2数据库Maria DB的Arabic_word列中 我得到了一个拉丁-1编码错误。但是在仔细阅读之后,我发现MySQLdb驱动程序默认为latin-1,我必须在mariadb.connect()函数中将utf-8显式设置为我选择的字符集 整个数据库设置为utf-8 代码: def insert_into_db(arabic_word, definition): try: conn = mari

我正在尝试使用MySQLdb驱动程序将一些阿拉伯语单词插入我的hanswehr2数据库Maria DB的
Arabic_word
列中

我得到了一个
拉丁-1编码错误
。但是在仔细阅读之后,我发现MySQLdb驱动程序默认为
latin-1
,我必须在
mariadb.connect()
函数中将
utf-8
显式设置为我选择的字符集

整个数据库设置为utf-8

代码:

def insert_into_db(arabic_word, definition):
    try:
        conn = mariadb.connect('localhost', 'root', 'xyz1234passwd', 'hans_wehr', charset='utf-8', use_unicode=True)
        conn.autocommit(True)
        cur = conn.cursor()
        cur.execute("INSERT INTO hanswehr2 (arabic_word , definition) VALUES (%s,%s)", (arabic_word, definition,))
    except mariadb.Error, e:
        print e
        sys.exit(1)
但是现在我得到了以下错误

/usr/bin/python2.7 /home/heisenberg/hans_wehr/main.py
Total lines 87672
(2019, "Can't initialize character set utf-8 (path: /usr/share/mysql/charsets/)")

Process finished with exit code 1
我已经指定Python MySQL驱动程序使用utf-8字符,但是它似乎忽略了这一点


任何输入都将受到高度赞赏。

有一种叫做排序规则的东西,可以帮助对特定语言的字符进行编码/解码。

我认为在创建数据库连接字符串中的时,需要指定它。请参阅:

有关python mysql连接的更多信息

MySQL中UTF-8的字符集别名是utf8(无连字符)

有关可用的字符集,请参阅


注意,如果您需要使用非BMP Unicode点,例如emojis,请对连接字符集和varchar类型使用
utf8mb4

它如何可能重复?您提到的问题在PHPoopps中,对此表示抱歉。但是你真的应该试着调用utf8,这似乎有帮助。检查此处:
utf-8
(带连字符)不是有效的字符集名称。使用
utf8
@AlastairMcCormack您能否将您的
utf8
注释作为答案,以帮助未来的SO用户。谢谢。@KenOkech非常感谢