我正在尝试使用python中的一些数据操作向(MySQL)数据库添加新条目。
我基本上将一些文件的名称解析为DB表的给定列。代码工作正常,名称将添加到数据库中。
某些文件包含属于德语的“特殊字符”,例如“ü”,“ä”,“ö”(称为变形金刚)。 具有这些特殊字符的单词也会被插入,并且可以在代码执行后在表格中完美地观察到(在phpMyAdmin / terminal中)。
问题:当我专门搜索时,这些已成功输入的特殊字符的单词在搜索中不会显示 。我得到的消息是一个空集 -
mysql> SELECT * from table1 where word='Künstler';
Empty set (0.00 sec)
使用搜索phpMyAdmin时也一样。
但是,假设我通过它的id搜索单词,找到它并手动替换单词(在程序中重写'ü')然后在搜索中识别它!
我的假设是这取决于Python的Unicode。 因此,我在python中试过这个:
i = 'Künstler'
word = i.encode('utf-8')
产生了错误消息:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 10: ordinal not in range(128)
替换'decode'函数而不是编码没有产生错误,但它没有解决DB中的问题。
有谁知道如何解决这个问题?
此外,我的所有列都定义为 collation = utf8_general_ci
数据库中“单词”的列被定义为VARCHAR(128),因为有些单词很长。我试图将它改为8位,但这也没有用 我正在使用Python 2.7.11
*我相信这个问题与我在这里看到的其他问题不同,因为它涉及Python而其他人没有。
编辑:在我的问题被反复标记为重复之后(虽然不是),我看到我必须清楚地说明一些事情。 带有'ü','ä','ö'的单词正确插入表格中。 显示条目时它们显示正确。 只有当我专门搜索它们时才会出现。