2013-02-17 4 views
0

저는 시스템을 스캔하고 python을 사용하여 sqlite3 데이터베이스에 파일 이름을 입력하고 있습니다.데이터베이스에 특수 문자 입력

파일 중 하나에 이름에 특수 문자가 포함되어 있으며 레코드를 삽입하는 동안 오류가 발생합니다. 이것은 파일 이름입니다.

a¿.mp3 

인해 특수 문자에 쿼리 또한

self.cursor.execute("INSERT INTO TRACKS VALUES (?)", i) 

, 난 UTF-8을 인코딩 할 수없는입니다.

이 데이터를 데이터베이스에 추가 할 때 사용할 수있는 다른 인코딩이 있습니까?

답변

0

utf-16 인코딩을 시도하거나 특수 문자 주위에 '를 추가 할 수 있습니다.

+0

으로 인코딩하면 utf-16이 다른 데이터를 성공적으로 인코딩합니까? 아니면 데이터의 종류를 계속 점검하고 이에 따라 인코딩해야합니까? –

+0

필자는 테스트를하지 않았지만 utf-16으로 나중에 열어 본다면 작동한다고 가정합니다. – Gjordis

+0

이것은 내 소스 dbInput = [(unicode (i, 'utf-16'),) 일치하는 경우] 일부는 일반 입력이고 일부는 특수 문자 인 반면, 오류가 발생합니다. UnicodeDecodeError : 'utf16' 코덱은 위치 82에서 바이트 0x33을 디코딩 할 수 없습니다. 일반 입력에 대해서는 잘린 데이터입니다. –

0

여기에 os.walk을 사용하고 있습니까? 그렇다면 디렉토리 이름을 맨 문자열이 아닌 os.walk(u'/some/path')과 같은 유니 코드 객체로 전달하여 모든 파일을 유니 코드로 가져옵니다. 그런 다음 utf-8 (또는 utf-8이 충분하지 않은 경우 utf-16)에서 filename.encode('utf-8')