mysql 的字符集是latin1,但还是可以存储中文,而且不会乱码?实在不知道其中的原由..有高手可以解答一下吗?

thanksfriend 2009-05-25 11:31:46
mysql 的字符集是latin1,但还是可以存储中文,而且不会乱码?实在不知道其中的原由..有高手可以解答一下吗?
...全文
433 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
trainee 2009-05-26
  • 打赏
  • 举报
回复
mysql4.0以前只有latin1字符集,什么都可存,包括乱码.

以前从3.x的数据倒到其他数据库, 常常倒不进去, 因为里面常常存了半个汉字.

MYSQL从来不把latin1里面的汉字当做汉字看待,你多测试一下 like 操作,就会发现问题.

ACMAIN_CHM 2009-05-26
  • 打赏
  • 举报
回复



原因很简单。测试方法,你可以打开windows的命令行(也就是俗称的DOS),然后通过mysql工具联接。这个时候你会发现,即使是latin1,也可以正常操作中文。因为当你输入一段中文的,时候,你的mysql工具告诉数据:“我送给你的是latin1,,结果MySQL自然把你传的“latin1”存储起来。当你查询的时候,MySQL又把这些latin1传给你,而你的mysql工具进行了显示。

比如 你 update table1 set col='中文'; 由于你的系统变量对字符集的设置均为latin1,所以mysql工具会通知MYSQL服务,我传给你 D6D0CEC4, 是latin1, 然后MYSQL一看和表中的字符集相同,就不做任何转换,直接把D6D0CEC4存入数据库表中。
当你select col from table1时,MySQL从数据库中取得D6D0CEC4, 由于表的字符集和你的client字符集相同,因此无需做任何字符集转换,直接发给client,这样你得到也是D6D0CEC4, 然后你的工具会显示D6D0CEC4为 '中文'

具体请参见:MySQL 中文显示乱码 http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx

thanksfriend 2009-05-25
  • 打赏
  • 举报
回复
只能说mysql 太垃圾了,呵呵
Jack850703 2009-05-25
  • 打赏
  • 举报
回复
你说也怪哈,为什么我用时却出现了乱码,哪里出现问题了呢?

57,063

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧