有2个问题请教各位~1,set names 'gbk' 这个能不能设在配置文件中,不用每次都写一下?2,mysql 3.2 使用 select char(-76,-13,-51,-73) 返回 "大头" 2个中文字. 在mysql5下却什么都没有.请问题这个是什么原因?要在什么地方设置么?

解决方案 »

  1.   

    1,set names 'gbk' 这个能不能设在配置文件中,不用每次都写一下?
    能直接在my.ini参数文件中加上  default-character-set=gbk
    2,mysql 3.2 使用 select char(-76,-13,-51,-73) 返回 "大头" 2个中文字. 在mysql5下却什么都没有.请问题这个是什么原因?要在什么地方设置么?
    字符集设置的问题。MYSQL5中应该无法实现这种转换。
    关于字符集更多的解释,你可以参考下贴字符集部分。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

         
    谢谢您的回复,我的应用程序就是用char()函数插入字符(中文),不可以修改,用MySQL5 就没办法了?
    另外char函数插入字符时英文可以用ASCII码,但中文为什么是负数呢?这是什么表示方法?请解惑,谢谢!   
      

  3.   

    MYSQL4以后支持字符集了,支持多字节编码。所以不能使用这种补码类似的值。
    mysql> select char(46323,52663);
    +-------------------+
    | char(46323,52663) |
    +-------------------+
    | 大头              |
    +-------------------+
    1 row in set (0.00 sec)mysql>
      

  4.   

    1、在INI中可以用
    default-character-set=gbk
    2、
    你的字符集是什么?
      

  5.   


    谢谢ACMAIN_CHM,的耐心解答,最后一个问题:
    如果程序不能修改的话,我是否可以用触发器之类的手段将这种负数转换成mysql5支持的编码写入表中?这之间有没有转换的算法?
      

  6.   


    我试过GBK,GB2312,UTF8 但select char(-76,-13,-51,-73)在Navicat中查看是不显示的,用cmdline显示4个问号。但在老版本的(3.2)中可以正常显示中文。
      

  7.   

    对,4以后支持字符集了,在5中测试了一下,没有办法用char(-76,-13,-51,-73)达到目的,看来你要
    修改程序了
      

  8.   

    上面写错了。我试过GBK,GB2312,UTF8 但select char(-76,-13,-51,-73)在Navicat中查看是显示4个问号,用cmdline也显示4个问号。用程序写入后再select出来是不显示。但在老版本的(3.2)中可以正常显示中文,3.2的字符集我也不知道是什么,查不出来。
      

  9.   

    参考一下ORD:
    SELECT CHAR(ORD('头'))
      

  10.   

    可以试一下,算法是补码的算法。
    select char(-76,-13,-51,-73)(256-76)*256+256-13 = 46323 = 大你可以在触发器中设置。