1

是的,就像标题所说的那样,您会想到 utf8 设置名称问题.. 甚至可能是真的。

我有这个查询:

select distinct ort from veranstaltungsorte where ort like 'ka%';

虽然它以“ka”开头,但结果却是“Köln”。连同3个正确的城市。

当我使用

select distinct ort from veranstaltungsorte where ort like 'kö%';

一切正常;只是我的数据库认为,科隆也以“ka”开头?!

我正在尝试字符集等,但它们都不起作用..有什么想法吗?

4

3 回答 3

0

这不是 utf8_general_ci 我之前已经尝试过.. 而是这个:

ALTER TABLE tablename
CHANGE ort ort VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

重要提示:“like”现在将区分大小写..所以我将第一个字母大写,我就完成了。不过感谢您的帮助。

于 2013-06-18T09:29:23.660 回答
0

utf8_general_ciÖ将排序O

所以也许这就是你想要的。

更多关于这里

否则。当您想搜索特定字符时,您可以将其设置为适用于utf8_swedish_ciÄËÖö

于 2013-06-18T09:23:45.687 回答
0

看起来您实际存储在ort列中的数据编码不正确:Köln实际上存储为Köln. 这可以解释为什么在寻找ka: 时会得到匹配项,就当前排序规则而言,Kà = ka.

您之前没有注意到这一点的事实意味着您实际上有两个问题:

  1. 您现在在数据库中的数据已损坏。您可以使用任何数据库工具进行检查。
  2. 您正在使用不正确的编码连接到数据库:您正在发送以 UTF-8 编码的字符串,而连接设置为 latin1 或类似的东西。

读取和写入时都会发生相同的字符修改,这意味着您在使用应用程序时可能不会注意到任何问题。

于 2013-06-18T13:17:28.907 回答