翻译 table 列后无法获取数据

Cannot get data after translating table column

我有一个简单查询的问题。假设我有 table colors(color, code)

CREATE TABLE IF NOT EXISTS `colors` (
  `color` varchar(20) NOT NULL,
  `code` varchar(20) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

有数据:

INSERT INTO colors VALUES ('blue', 'Conventional'), ('green', 'Realistic');

当我进行简单的 select 查询时

SELECT * FROM colors WHERE code = 'Realistic';

我得到了相应的行。

然后,我将 code 列翻译成希腊语。所以我更新了 colors table.

UPDATE colors set code = 'Συμβατικός' WHERE color = 'blue';
UPDATE colors set code = 'Ρεαλιστικός' WHERE color = 'green';

table 已成功更新。但是,如果我现在进行查询

SELECT * FROM colors WHERE code = 'Ρεαλιστικός';

我没有得到结果!

为什么会这样?有没有什么想法,因为我想不通。

提前致谢。

你已经进入了UTF-8的奇异世界。

首先要知道的是:

将数据库排序规则设置为 UTF-8 是不够的。

您还需要注意几点。我敢打赌,您忘记或不知道要记住其中的一些事情。尝试一下,看看是否有帮助。

  • 修改您的 php.ini 文件以使用 UTF-8 作为默认字符集:default_charset = "utf-8";
  • 将 UTF-8 设置为所有 MySQL 连接的默认字符集(是的,您的连接也使用字符集)
  • 在 MySQL 方面,可能需要对 my.ini 文件进行如下修改:

    [client]
    default-character-set=UTF-8
    
    [mysql]
    default-character-set=UTF-8
    
    [mysqld]
    character-set-client-handshake = false #force encoding to uft8
    character-set-server=UTF-8
    collation-server=UTF-8_general_ci
    
    [mysqld_safe]
    default-character-set=UTF-8
    

    完成这些更改后重新启动 MySQL。

  • 如果连接客户端无法指定其与MySQL通信的编码,建立连接后您可能必须运行以下command/query: set names UTF-8;