2012-11-16 2 views
1

임의의 웹 페이지의 내용을 mysql 데이터베이스 (MySQLdb)에 저장하는 스크립트가 있습니다. 페이지의 일부를 들어, 내가 얻을 : 나는 sqlite3 사용하는 경우MySQL에 삽입 할 때 유니 코드 오류가 발생했습니다.

... 
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", 
    line 264, in literal 
return self.escape(o, self.encoders)           
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", 
    line 202, in unicode_literal 
return db.literal(u.encode(unicode_literal.charset)) 

UnicodeEncodeError: 'latin-1' codec can't encode character 
u'\u203a' in position 172550: ordinal not in range(256) 

, 나는 그와 아무 문제가 없었다.

내가 성공하지 않고,이 시도 :

CREATE DATABASE the_base CHARACTER SET utf8 

질문 : 방법/인코딩이 문제 적없이 DB에 저장되도록 정확하게 데이터를 디코딩?

P. ~ 당신 만이있는 인코딩으로 임의 유니 코드를 저장할 수 없습니다

MySQLdb.connect(... charset='utf8', use_unicode=True) 

답변

1

: 파이썬에서 문자 인코딩은 ...

추가 인코딩 방법 connect에 해결 끝없는 이야기 256 개의 가능한 항목 (즉, latin-1). 데이터베이스 인코딩을 예 : UTF-8 그리고 당신은 잘 가야합니다.

+0

나는 단지'CREATE DATABASE the_base CHARACTER SET utf8'을 시도했지만 여전히 같은 오류가 발생했습니다. –

+0

연결 매개 변수에'charset = 'utf-8'을 가지고 있는지 확인하십시오 (특히 데이터베이스와 서버가 다른 인코딩을 사용하는 경우). – thebjorn

+0

작품! 실제로는 'utf8'이어야하며, 'utf-8'은 오류를 발생시킵니다. –

관련 문제