2012-02-17 5 views
4

안녕하세요. MySQL에 문자열 값을 저장하려고하는데 db.escape_string()을 사용하므로 특수 문자를 이스케이프 처리하지 않습니다. 문자열은Python의 MySQL : UnicodeEncodeError : 'ascii'

Lala*=#&%@<>_?!:;-'"/()¥¡¿ 

입니다하지만 코드를 실행하려고하면이 오류 얻을 :

UnicodeEncodeError: 'ascii' codec can't encode characters in position 23-25: ordinal not in range(128)

어떻게해야합니까를?

newStr = u'Lala*=#&%@<>_?!:;-'"/()¥¡¿' 

대신 'u'something로, 유니 코드로 선언해야합니다 :

답변

-2

오류 (그들은 대신 유니 코드입니다)를 사용하여 시도 ASCII에 존재하지 않는 이곳 문자가 있다고 말한다.
이것은 대부분의 파이썬 셸에서 작동하지 않을 수 있으므로 IDE가 유니 코드를 지원할 수 있는지, 사용중인 파일의 맨 위에 유니 코드 선언이 있는지 확인하십시오.

+0

을 피하기 위해 당신의 문자열에서 문자를 '탈출을주의하시기 바랍니다 변수를 편집 할 수 없습니까? 예 : 문자열이 이미 STR에 저장되어 있습니다. 그걸 어떻게 추가 할 수 있니? – weyhei

+0

'STR.decode ('utf-8')'는 적절한 인코딩으로'unicode' 객체로 변경합니다. – FakeRainBrigand

+0

시도했습니다. 하지만 다른 오류가 발생했습니다 : 파일 "/usr/lib/python2.7/encodings/utf_8.py", 디코드 코드에서 return codecs.utf_8_decode (input, errors, True) UnicodeEncodeError : 'ascii'코덱은 문자를 위치 23-25로 인코딩 : 서수가 범위 내에 없음 (128) – weyhei

0

예를 들어 http://pypi.python.org/pypi/Unidecode/0.04.1

을 시도해보십시오

from unidecode import unidecode 

your_string = 'Lala*=#&%@<>_?!:;-\'"/()¥¡¿' 
unidecode(your_string) 

내가 문자열이 다른에 저장되는 경우 구문 에러

관련 문제