2016-06-08 9 views
1

MySQLdb 드라이버를 사용하여 hanswehr2 데이터베이스 Maria DB의 arabic_word 열에 아랍어 단어를 삽입하려고합니다.MySQLdb가 문자 집합 utf-8 오류를 초기화 할 수 없습니다.

나는 latin-1 encode error을 얻고있었습니다. 그러나 주위를 읽은 후 MySQLdb 드라이버가 latin-1으로 기본값으로 설정되어 있고 함수에서 명시 적으로 utf-8을 내 charset으로 설정해야한다는 것을 알았습니다. 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) 

지금 나는 다음과 같은 얻을 오류 : 나는 UTF-8 문자를 사용하는 파이썬 MySQL의 드라이버를 지정

/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 

그러나이 보인다 이것을 무시하십시오.

모든 입력 사항을 높이 평가할 것입니다.

+0

어떻게 복제 할 수 있습니까? 참조한 질문은 PHP – silberbaum

+0

에 있습니다. 죄송합니다. 하지만 실제로는''utf8 '을 호출하면 도움이 될 것 같습니다. 여기를 확인하십시오 : http://stackoverflow.com/a/6203782/4421474 – Alex

+1

'utf-8' (하이픈 포함)은 유효한 문자 집합 이름이 아닙니다. 'utf8' 사용 –

답변

5

캐릭터 세트의 별명이 utf8 (NO 하이픈)입니다.

사용 가능한 문자 집합에 대해서는 https://dev.mysql.com/doc/refman/5.5/en/charset-charsets.html을 참조하십시오.

emojis와 같은 BMP 이외의 유니 코드 포인트를 사용해야하는 경우 연결 charset 및 varchar 유형에 utf8mb4을 사용하십시오.

-1

데이터 정렬은 특정 언어의 문자를 인코딩/디코딩하는 데 유용합니다. https://softwareengineering.stackexchange.com/questions/95048/what-is-the-difference-between-collation-and-character-set

나는 연결 문자열 당신의 데이터베이스테이블또는을 만드는 그것을 을 지정하는 유 필요가 있다고 생각합니다. 이 참조 : store arabic in SQL database

파이썬 MySQL의 연결 에 : MySQL은 UTF-8 https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-set-charset-collation.html