0

我注意到了这一点,因为对于某些单词,它返回了错误的词源。所以我注意到查询返回许多结果而不是一个。该表有大约 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 的红色条目),但如果您放大图像,您会看到它们是不同的字母(第一个和最后一个字母)。

4

1 回答 1

1

从评论和测试来看,几乎可以肯定是字符编码问题。不确定您当前使用的是哪个字符集,但您可以尝试类似“希腊语”(ISO 8859-7 希腊语)之类的内容 - 此处的其他可能性:http: //dev.mysql.com/doc/refman/5.1/en/charset-字符集.html

每个字符集的一些字符图表在这里:http ://collat​​ion-charts.org/mysql60/

如果更改数据库上的字符集不能解决问题,还有一些关于设置连接使用的字符集(不仅仅是实际服务器)的注意事项。希望有帮助!

编辑

显然你可以使用命令

show variables like 'char%';

查看您当前的所有字符集编码。我在这个主题上看到了这个博客,这个主题并不完全相同,但很有趣:https ://www.bluebox.net/insight/blog-article/getting-out-of-mysql-character-set-hell

于 2013-11-11T13:57:26.147 回答