mysql 编码问题 latin1(iso8859)

本文探讨了一起在Java项目中使用iBatis时遇到的MySQL编码问题。由于数据库和客户端库均使用latin1编码,但在查询过程中出现混淆情况。经过排查,发现并非字符集设置问题,而是校对集(collation)的影响。具体表现为latin1_swedish_ci校对集导致某些字符无法正确区分。通过将校对集转换为latin1_bin解决了问题,并建议在创建数据库和表时明确指定编码和校对集。
摘要由CSDN通过智能技术生成

  由于项目环境的缘故, 在java项目中使用了ibatis, 而ibatis已经有个数据源是aiscii (iso8859)编码,因此mysql 数据库必须使用latin1编码, mysql客户端库也使用latin1编码,正常情况下,使用都正常,但发现有几个数据很奇怪,如只过滤"淘_淘"的数据,结果把"象_王"的数据查了出来, 和DBA一起搞了半天,使用hex函数查看"淘_淘"和"象_王"的ascii值也是不同的, 换成GBK编码,结果是好的,可以区分

"象_王"和"淘_淘", 说明是编码问题, 这样就是查看编码,使用show variables like 'colla%'; 结果是:

--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值