mysql 在 win7 和 debian8 上产生不同的结果

标签 mysql special-characters

我正在使用安装了 xampp 1.8.3-2 和 mysqlserver 版本 5.6.14 的 Debian 服务器。在旧数据库中,由于像ä,ö,ü,ß等德语字符,latin1_german2_ci被用作数据库和表的字符排序规则。现在,我必须将表的排序规则转换为utf8_unicode_ci(数据库的排序规则)仍在 latin1_german2_ci 中)。但在那之后,像这样的查询将不再产生正确的答案。也就是说,它不仅提供了 的所有内容,还提供了 ko 的所有内容。我该如何解决这个问题?

SELECT * FROM users Where lastname like "%kö%" 

编辑:刚刚找到一个使用COLLATE的解决方案:

SELECT * FROM users Where lastname like "%kö%" COLLATE utf8mb4_german2_ci

但是,这必须根据使用的服务器连接排序规则进行调整,因此如果服务器连接排序规则是 utf8_unicode_ci,则查询必须更改为

SELECT * FROM users Where lastname like "%kö%" COLLATE utf8_german2_ci

所以我现在的问题是:有没有更好/更优雅的方法来解决我的问题?数据库中是否有任何选项可以防止这种情况发生?

最佳答案

尝试将表的字符集设置为 UTF-8,将排序规则设置为 utf8_*,并确保没有 _ci 和结尾(_ci 表示“不区分大小写”),否则 MySQL 将执行不区分大小写和重音的搜索。

关于mysql 在 win7 和 debian8 上产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35791018/

相关文章:

将 ÆØÅ 等特殊字符读入 R (Rstudio)

javascript - 如何检测文本区域输入中的换行符?

mysql - SQL Zoonet 更多连接操作#10

java - 如何使用 Html.fromHtml 在 android 中显示心脏标志

mysql - 防止mysql中的 "double holiday taking"

mysql - 如何从其他 ColdFusion 文件获取值

php - 处理丹麦语特殊字符

python - 从 Python 中的字符串中删除表情符号

mysql - 如何在文本的开头和结尾对mySQL进行REPLACE?

PHP 在 while 循环中从输入表单中获取值