gpt4 book ai didi

java - 即使正确设置编码后,也无法在 mysql 中插入 CAFÉ

转载 作者:行者123 更新时间:2023-11-29 08:13:22 26 4
gpt4 key购买 nike

我在 mySQL 表的 name 字段中插入了单词 CAFE

意外地,当我执行下面的语句时,我得到了一行包含 CAFE

SELECT * FROM myTable where name='CAFÉ'; 

,这是错误的。在我的用例中 CAFE 不应该等于 CAFÉ

我认为我在服务器和客户端正确设置了所有编码:

服务器端:

通过修改/etc/mysql/my.cnf我得到以下内容

mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

客户端:

      connect = DriverManager
.getConnection("jdbc:mysql://"+serverName+"/" +
dataBaseName + "?characterEncoding=utf8&user=" + userName + "&password=" + password);

附:有很多与此类似的重复问题,但没有一个具体回答我遇到的问题。

最佳答案

排序规则utf8_general_ci(_ci代表不区分大小写)不仅使e等于E,而且也使 E 等于 É。要使 select 语句区分大小写,您可以使用 this 中的解决方案答案:

SELECT * FROM myTable where BINARY name='CAFÉ';

如果您希望 name 列中的数据始终区分大小写,请使用区分大小写的 _bin 排序规则,如 this 的答案中所示。问题。例如。创建表时,使用:

CREATE TABLE myTable (
...
) CHARACTER SET utf8 COLLATE utf8_bin ENGINE=MyISAM;

关于java - 即使正确设置编码后,也无法在 mysql 中插入 CAFÉ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21102520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com