mysql 데이터베이스에서 일부 행을 가져 오기 위해 저장 프로 시저를 사용하고 있습니다. 이제파이썬 - 유니 코드 문자열 튜플, 인코딩 오류
retarr = []
cursor.callproc("employee_get", (-1, -1, -1))
for res in cursor.stored_results():
retarr.append(res.fetchall())
cursor.close()
...
:
나는 아주 기본적인 구문을 사용하여. 일부 데이터 결과는 유니 코드 문자열입니다. 내 데이터베이스에서 문자열 인코딩에 UTF-8을 사용합니다. charset = "utf8"및 use_unicode = True를 사용합니다.유니 코드 문자가 포함 된 catch 된 데이터 (전체 데이터 튜플)를 인쇄하려고하면 문제가 발생합니다. Like :
for row in retarr[0]:
print(row)
제게 캐치 된 행을 올바르게 인쇄합니다. 그러나 첫 번째 문자는 유니 코드 문자가 없습니다. 그럼 두 번째와 내가 얻을 수있는 유명한 오류 : UnicodeEncodeError : 'ascii'코덱은 문자 '\ u0119'를 위치 19에서 인코딩 할 수 없습니다. 서수는 범위 (128)에 없습니다. 무엇이 문제입니까? 나는 아주 기본적인 것을 놓치고 있다고 믿는다.
파이썬 3.3.2 표준 mysql 커넥터를 사용합니다. OSX.
귀하의 터미널 시스템 일 수 있습니다. 예를 들어 IDLE에서 잘 작동하는'cmd.exe'에서'UnicodeEncodeError'를 얻을 수 있습니다. – cdarke
이상하게도 코모도에 문제가있을 수 있습니다. 내가 터미널 (python3)에서 단순히 '\ u0119'를 인쇄하려고하면 작동하지만 코모도에서 실행하면 예외가 발생합니다. 환경 설정에서 기본 enconding을 UTF-8로 변경했지만 여전히 작동하지 않습니다. –