2016-06-08 4 views
1

Я пытаюсь вставить какое-то арабское слово в столбец arabic_word моей базы данных hanswehr2 Maria DB с использованием драйвера MySQLdb.MySQLdb не может инициализировать набор символов utf-8 error

Я получаю latin-1 encode error. Но после прочтения, я узнал, что драйвер MySQLdb по умолчанию был latin-1, и мне пришлось явно установить utf-8 в качестве моей кодировки по выбору в функции mariadb.connect(). Sauce.

Вся база данных установлена ​​на utf-8.

Код:

def insert_into_db(arabic_word, definition): 
    try: 
     conn = mariadb.connect('localhost', 'root', 'crooked_hillary', '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, однако, кажется, проигнорируйте это.

Любые материалы будут высоко оценены.

+0

Как это возможно дублировать? Вопрос, на который вы ссылаетесь, находится в PHP – silberbaum

+0

oopps, извините за это. Но вы действительно должны пытаться называть '' utf8', кажется, что это может помочь. здесь: http://stackoverflow.com/a/6203782/4421474 – Alex

+1

'utf-8' (с дефис) не является допустимым именем набора символов. Использовать 'utf8' –

ответ

5

Кодировка псевдоним для UTF-8 в MySQL является utf8 (без дефиса).

См. https://dev.mysql.com/doc/refman/5.5/en/charset-charsets.html для доступных кодировок.

Обратите внимание, что если вам нужно использовать точки Unicode, отличные от BMP, такие как emojis, используйте utf8mb4 для кодировки соединений и типа varchar.

-1

Существует что-то вроде сопоставлений, которое помогает кодировать/декодировать символы для определенных языков. https://softwareengineering.stackexchange.com/questions/95048/what-is-the-difference-between-collation-and-character-set

Я думаю, что у нужно указать это когда создание вашей базы данныхтаблицуили в строке соединения. см это: store arabic in SQL database

Больше на Python соединения MySQL: https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-set-charset-collation.html