我已经写好了从文本文件读取单词并将其输入到SQLite数据库中,并将它们作为字符串处理的程序。但是,我需要输入一些包含德语umlauts的单词:
这里是一段准备好的代码:
我尝试了使用 # -- coding: iso-8859-15 -- 和 # -- coding: utf-8 -- 两种方法,但没有区别!
我尝试使用codecs模块来读取一个utf-8、iso-8859-15编码的文件。但是我无法解码成我需要在代码末尾完成句子的'süß'字符串。
我曾经尝试在将其插入数据库之前将其解码为utf-8。这种方法有效,但我不能将其用作字符串。
有没有一种方法可以从文件中导入'süß'并将其用于插入sqlite和用作字符串?
更多详细信息:
这里我添加更多细节以作说明。包含单词'süß'的文本文件保存为utf-8格式。使用
问题出在这里:
谢谢。
ä
,ö
,ü
,ß
。这里是一段准备好的代码:
我尝试了使用 # -- coding: iso-8859-15 -- 和 # -- coding: 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üß”的文件中读取文本。因此,当我取消注释三行(f.open(filename) ...)并注释掉text = u'süß'时,它会出现错误。
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
我尝试使用codecs模块来读取一个utf-8、iso-8859-15编码的文件。但是我无法解码成我需要在代码末尾完成句子的'süß'字符串。
我曾经尝试在将其插入数据库之前将其解码为utf-8。这种方法有效,但我不能将其用作字符串。
有没有一种方法可以从文件中导入'süß'并将其用于插入sqlite和用作字符串?
更多详细信息:
这里我添加更多细节以作说明。包含单词'süß'的文本文件保存为utf-8格式。使用
codecs.open(filename, 'r', 'utf-8')
和text=f.read()
,我将文件读取为unicode字符串u'\ufeffs\xfc\xdf'
。在sqlite3中插入此unicode字符串非常顺利: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)
输出我的结果süß,但是print(text)
会引发错误UnicodeEncodeError: 'charmap' codec can't encode character u'\ufeff' in position 0: character maps to <undefined>
。谢谢。
text
文本中产生了很大的差异。 - Mark Ransomtext = u'süß'
。但它对从文件中读取的文本没有任何影响。你可以使用codecs.open()
来处理后者。 - jfsreadlines
返回一个列表。使用f.read().strip()
将文件的文本作为字符串获取。然后你可以开始担心编码问题。 - alexis