【发布时间】:2023-03-19 14:03:01
【问题描述】:
我有 latin1 MySQL 数据库,将其转换为 utf8 为时已晚。
当我搜索包含(例如法语字母)的文本时,我得到与英语字母相同的结果。
示例:当我搜索“tést”时,我从 MySQL 中得到“test”。
我怎样才能避免这种情况?
谢谢。
【问题讨论】:
-
请minimal reproducible example。确保包含用于存储数据的代码和用于查询数据的代码。
我有 latin1 MySQL 数据库,将其转换为 utf8 为时已晚。
当我搜索包含(例如法语字母)的文本时,我得到与英语字母相同的结果。
示例:当我搜索“tést”时,我从 MySQL 中得到“test”。
我怎样才能避免这种情况?
谢谢。
【问题讨论】:
COLLATION latin1_general_ci 将在搜索 tést 时找到 test。因为这可能是您的排序规则(让我们看看SHOW CREATE TABLE),所以这不是避免获得test 的有效方法。
如果你只有西欧字符,utf8 不是关键目标。
要将表 foo 更改为该排序规则:
ALTER TABLE foo CONVERT TO CHARACTER SET latin1 COLLATE latin1_bin;
由于涉及复制整个表格,因此需要一些时间。
【讨论】: