2013-01-14 3 views
0

파이썬에서 MySQL을 호출 할 때 나는 "SET NAMES 'utf8'"으로 준비하지만 아직 뭔가 잘못되었습니다. 나는 순서과 같이 얻을 : 내가 중국어 문자, 다른 곳에서 항상 UTF-8 적용을 얻을 수 있겠Python.27 - MySQL utf8 인코딩

å½å®¶1级è¯ä¹¦ 

.

내가 utf8 코드/시퀀스를 보면 분명히 실제와 일치하지 않습니다. 형식은 같지만 숫자가 다릅니다.

이 잘못된 인코딩은 파이썬 2.7의 끝이나 잘못된 프로그래밍입니까? 파이썬 3.x는 이러한 문제를 해결했지만 이후 버전에서는 원하는 모듈을 사용할 수 없다는 것을 알고 있습니다.

필자는 파이썬 2.7이 인쇄 연산자를 사용하여 실제로 중국어를 표시 할 수 있지만 utf8 코드로 저장되고 표시된다는 것을 알고 있습니다. 봐 :

>>> '你好' 

'\xc4\xe3\xba\xc3' 

>>> print '\xc4\xe3\xba\xc3' 

你好 
+1

먼저 MySQL 데이터베이스에 실제로 인코딩 된 데이터가 올바르게 포함되어 있는지 확인하십시오. 'SELECT HEX (my_column) FROM my_table WHERE ...' – eggyal

+0

형식은 16 진수이며 다른 코딩 스키마와 동일한 기본 구조를 갖지만 "SET 코드의 MySQL 부분에서 NAMES 'utf8' "은 문자의 혼란 만 찾아 냈습니다. 그러나 MySQL 모듈의 커넥터에 charset = 'utf8'을 추가하면 트릭이 실행됩니다. 거기에 가셨지만, 이제는 (매우 광범위한) 미리로드 된 사전과 가져온 MySQL 데이터 사이에 비 호환성이 있습니다. utf8 테이블 표준에 중국어 차이가 있습니까? 또는 Hanzi (chinese)의 하위 집합 인 Kanji 일 수도 있습니다. 아니면 'print'가 (utf8이 아닌)이 형식을 번역 할 수있는 문제입니까? – user1597652

+0

좋아, 이것은 여전히 ​​듣고있는 사람에게 도움이 될 것입니다 : "print '\ xb9 \ xfa'"와 "print u '\ u56fd'"는 모두 같은 문자를 산출하지만, '...'는 유니 코드 형식으로, ? 다른 하나는 utf8입니까? 아무도이 사이에 변환하는 방법을 알고 있을까요? – user1597652

답변

0

좋아 .. 그것은

는 MySQL SELECT 쿼리하기 전에

"NAMES 'GBK'을 SET"한 트릭을 추가하는 것 같다. 이제 적어도 사전과 SQL 데이터베이스의 문자열을 비교할 수 있습니다. 또한 gbk가 종종 중국에서 선호되는 char 형식 인 것으로 보입니다.