我注意到了这一点,因为对于某些词语,它返回了错误的词源。所以我注意到查询返回了许多结果而不是一个结果。该表有大约60000个条目。
所以这是我的mysql查询:
conMySQL.ConnectionString = "Provider=MSDASQL; DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & MYSQLserverIP & ";Port=" & MYSQLserverPort & ";DATABASE=" & MYSQLserverDB & ";UID=" & MYSQLserverUser & ";PASSWORD=" & MYSQLserverPass & ";OPTION=3;Connect Timeout=1;"
conMySQL.Open
If conMySQL.State = 1 Then
recMySQL.Open "SELECT * FROM tEtymology WHERE sLemma='" & sLemma & "'", conMySQL, adOpenStatic, adLockReadOnly
If Not (recMySQL.EOF And recMySQL.BOF) Then
recMySQL.MoveFirst
strReturn = sLemma & "<br>" & recMySQL.Fields("id").Value & "#" & recMySQL.Fields("sLemma").Value & "#" & recMySQL.Fields("sEtymology").Value
recMySQL.MoveNext
strReturn = strReturn & "<br>" & recMySQL.Fields("id").Value & "#" & recMySQL.Fields("sLemma").Value & "#" & recMySQL.Fields("sEtymology").Value
End If
End If
例如,对于引理“μπότα”,结果是:
μπότα
34288#μπότα#[<μσν. μπότα < γαλλ. botte]
38505#οπότε#[<αρχ. ὁπόταν, με επίδραση του ὅτε]
对于许多单词而言,这不仅适用于您在此处看到的单词。我尝试删除sLemma字段中的索引(认为索引条目是一个散列值,并且由于碰撞它变得相同),但没有变化。我也尝试更改sLemma列的排序规则,但没有任何改变。
所以我从中理解的是,对于mysqlμπότα=μπότα和μπότα=οπότε这没有任何意义。 sLemma列中只有一个条目“μπότα”。
有什么想法吗?
编辑:这是条目在phpmyadmin中的显示方式
您可能认为它是相同的条目(带有此处提到的ID的红色条目),但如果您缩放图像,您将看到它们是不同的字母(第一个和最后一个字母)。
答案 0 :(得分:0)
从评论和测试中,几乎可以肯定是一个字符编码问题。不确定您目前使用的是哪个字符集,但您可以尝试类似“希腊语”(ISO 8859-7希腊语)的内容 - 其他可能性:http://dev.mysql.com/doc/refman/5.1/en/charset-charsets.html
此处每个字符集的一些字符图表:http://collation-charts.org/mysql60/
如果更改db上的字符集无法解决问题,还有一些注意事项需要注意设置连接使用的字符集(而不仅仅是实际服务器)。希望有所帮助!
修改
显然你可以使用命令
show variables like 'char%';
查看所有当前的字符集编码。我在这个博客上看到的主题并不完全相同,但非常有趣:https://www.bluebox.net/insight/blog-article/getting-out-of-mysql-character-set-hell