텍스트 파일의 단어를 읽고 sqlite 데이터베이스에 입력하고 문자열로 처리하는 프로그램을 작성했습니다. 그러나 나는 게르만 umlates : äöüß을 포함하는 몇 마디를 입력해야합니다. - -python : 유니 코드로 독일어 움라우트가 포함 된 파일을 열고 읽습니다.
I의 #와 TREID 모두 코딩 : 여기서
코드 준비된 조각 ISO-8859-15 - - 및 # - - 코딩 : UTF-8 - - 차이 (!)# -*- coding: iso-8859-15 -*-
import sqlite3
dbname = 'sampledb.db'
filename ='text.txt'
con = sqlite3.connect(dbname)
cur = con.cursor()
cur.execute('''create table IF NOT EXISTS table1 (id INTEGER PRIMARY KEY,name)''')
#f=open(filename)
#text = f.readlines()
#f.close()
text = u'süß'
print (text)
cur.execute("insert into table1 (id,name) VALUES (NULL,?)",(text,))
con.commit()
sentence = "The name is: %s" %(text,)
print (sentence)
f.close()
con.close()
위의 코드가 잘 실행됩니다. 하지만 'süß'라는 단어가 들어있는 파일에서 'text'를 읽어야합니다. 내가 3 선 (f.open (파일 이름) ....), 및 주석 텍스트 = u'süß '의 주석을 해제 할 때 그래서 내가 UTF-를 읽을 코덱을 모듈을 시도
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
오류를 제공합니다 8, iso-8859-15. 하지만 코드의 끝에 문장을 완성하는 데 필요한 'süß'문자열로 디코딩 할 수는 없습니다.
일단 데이터베이스에 삽입하기 전에 utf-8로 디코딩 해 보았습니다. 그것은 효과가 있었지만 문자열로 사용할 수는 없었습니다.
파일에서 süß를 가져올 수 있고 sqlite에 삽입하고 문자열로 사용하는 데 사용할 수 있습니까?
더 자세히 : 여기
내가 설명에 대한 자세한 내용을 추가 할 수 있습니다. 전에 codecs.open
을 사용했습니다. 단어이 들어있는 텍스트 파일은 utf-8
으로 저장됩니다. f=codecs.open(filename, 'r', 'utf-8')
과 text=f.read()
을 사용하여 유니 코드 u'\ufeffs\xfc\xdf'
으로 파일을 읽었습니다. 이 유니 코드를 sqlite3에 삽입하면 원활하게 수행됩니다 : cur.execute("insert into table1 (id,name) VALUES (NULL,?)",(text,))
. sentence = "The name is: %s" %(text,)
가 u'The name is: \ufeffs\xfc\xdf'
를 제공하고, print(text)
이 오류 UnicodeEncodeError: 'charmap' codec can't encode character u'\ufeff' in position 0: character maps to <undefined>
을 제공하면서 또한, 내 출력 Süß로 print(text)
해야합니다
문제는 여기에있다.
감사합니다.
코딩 파라미터 *이 있어야합니다
간단한 해결책은 내 마음에 오는 물음표를 제거하는 것은 이 기능을 대체 사용하는 것입니다 'text' 리터럴에서 큰 차이를 만들었습니다. –
: 모듈 상단의 코딩 선언은 소스 코드에 지정된'text = u'süß '에 영향을 미칩니다. 파일에서 읽은 텍스트에 영향을주지 않습니다. 후자의 경우'codecs.open() '을 사용할 수 있습니다. – jfs
'readlines'는리스트를 반환합니다. 파일의 텍스트를 문자열로 가져 오려면'f.read(). strip()'을 사용하십시오. _ 이제 인코딩에 대해 걱정할 수 있습니다. – alexis