2014-01-25 2 views
1

나는 파이썬 스크립트를 실행하고 난파이썬 아스키 인코딩 문제

sql = 'insert into posts(msg_id, msg_text, msg_date) values("{0}", "{1}", "{2}")'.format(msg['id'], text.encode('utf-8'), msg['datime']) 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 25-31: ordinal not in range(128) 

어떻게 내가이 오류를 해결하거나 아니면 예외로 잡은 다음 오류가? 어떤 아이디어?

+0

여기서 '텍스트'값은 무엇입니까? –

답변

1

는 시도 :

sql = u'insert into posts(msg_id, msg_text, msg_date) values("{0}", "{1}", "{2}")'.format(msg['id'], text.decode('utf-8'), msg['datime']) 

기본적으로, 당신의 textutf-8 문자를 포함하고 encode() 방법을 사용하여

한, 당신은 그것을 유지. 그러나 기본 문자열 (서식을 지정하는 문자열)은 일반 ASCII 문자열입니다. 문자열 ( u'') 앞에 u을 추가하면 유니 코드 문자열이됩니다. 그런 다음 텍스트에있는 내용이 모두 utf-8으로 디코드되도록하려면 .encode() 대신 .decode()을 디코딩하면됩니다.

당신은 단순히 오류의 종류, 잡을하려면 :

try: 
    sql = … 
except UnicodeEncodeError, err: 
    print err 

을하지만 당신이 정말로 어떤 UTF8/아스키 혼란을 없애려면, 당신은 파이썬으로 전환을 생각해야한다 3.

HTH