大家多知道,4.0-默认为拉丁,而很多用户安装的时候并不会去设置。由于4.1开始支持多级字符集设置,而还有什么连接校对字符集啊,什么七七八八的...因此导到了很多用户在mysql4.0升级到4.1的时候会乱码。而网上很多解决乱码的问题是set name 'gbk';来解决(即用mysql 2.33之类导出的*.sql之前加set name 'gbk')可是拉丁1包含gbk的定义吗?不然怎么是这样呢?大家有去想过这个问题吗?因此,我假定,mysql 4.0安装在简体文的windows xp环境下那么,mysql极有可能默认采用操作系统默认的字符集,即有可能是GBK了!!!(而不是有人说的将中文分成啥啊啥再存入,什么的)不过我也不敢肯定,因为我没有环境测试。(不过,之前我们经理用的是英文版的windows xp,我在上面装中文软件的时候会乱码)那mysql4.1由于可以自定义字符集,因此就没有所谓的默认采用操作系统默认字符集一说???而且mysql4.1开始有什么连接校对字符集啊什么之类的,因此就会出现字符集的转换!!!gbk和utf-8之间的转换会乱码吗?我认为是:如果字符是在gbk能表示的的范围内转换就不会乱码,如果超出就会而如果直接拿gbk编码的文本用utf-8来显示就肯定会乱码了,因为没有经过转换处理嘛。而mysql转换字符集是需要耗费CPU资源的。另外,我发现phpmyadmin不管你怎么设置连接校对他多采用utf-8,因此...我的说法对与否,大家一起讨论一下。

解决方案 »

  1.   

    我感觉,mysql4.1以上版本,开始对数据进行了校验,单字节的能存俩字节和三字节的字符,两字节的不能存三字节的字符,三字节的不能存2字节的字符
    拉丁能存gbk,utf8 而 gbk不能存 utf8的字符
      

  2.   

    下面的文章希望对你有帮助
    http://www.programmerstudy.com/database/mysql/20084/142.html
      

  3.   

    下面文章对你会有帮助
    http://www.programmerstudy.com/database/mysql/20084/142.html
      

  4.   

    不知道你是在jsp网页中向数据库中添加数据呢?要是的话,则在前面加上<%request.setCharacterEncoding("gbk");%>语句就好了。