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

解决方案 »

  1.   

    只能说mysql 太垃圾了,呵呵
      

  2.   

    原因很简单。测试方法,你可以打开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
      

  3.   

    mysql4.0以前只有latin1字符集,什么都可存,包括乱码. 以前从3.x的数据倒到其他数据库, 常常倒不进去, 因为里面常常存了半个汉字.MYSQL从来不把latin1里面的汉字当做汉字看待,你多测试一下 like 操作,就会发现问题.