경로 변수 를 인코딩 하고 SQLite 데이터베이스에 삽입하는 데 문제가 있습니다. 도움이되지 않는 encode ( "utf-8") 함수 로 해결하려고했습니다 . 그럼 내가 사용하는 유니 코드 () 나 입력주는 기능 유니 코드를 .
print type(path) # <type 'unicode'>
path = path.replace("one", "two") # <type 'str'>
path = path.encode("utf-8") # <type 'str'> strange
path = unicode(path) # <type 'unicode'>
마지막으로 유니 코드 유형을 얻었 지만 경로 변수 의 유형 이 str 일 때 나타나는 동일한 오류가 여전히 있습니다.
sqlite3.ProgrammingError : 8 비트 바이트 열을 해석 할 수있는 text_factory (예 : text_factory = str)를 사용하지 않는 한 8 비트 바이트 열을 사용해서는 안됩니다. 대신 응용 프로그램을 유니 코드 문자열로 전환하는 것이 좋습니다.
이 오류를 해결하고 올바른 사용법 encode("utf-8")
및 unicode()
기능에 대해 설명해 주 시겠습니까? 나는 종종 그것으로 싸우고 있습니다.
편집하다:
이 execute () 문에서 오류가 발생했습니다.
cur.execute("update docs set path = :fullFilePath where path = :path", locals())
동일한 문제로 고통받는 fullFilePath 변수 의 인코딩을 변경하는 것을 잊었 지만 지금은 상당히 혼란 스럽습니다. unicode () 또는 encode ( "utf-8") 또는 둘 다를 사용해야합니까 ?
나는 사용할 수 없다
fullFilePath = unicode(fullFilePath.encode("utf-8"))
이 오류가 발생하기 때문입니다.
UnicodeDecodeError : 'ascii'코덱이 위치 32의 0xc5 바이트를 디코딩 할 수 없습니다. 서 수가 범위에 없습니다 (128).
Python 버전은 2.7.2입니다.