€这个符号我的可以存放进数据库,也能正确读取出来显示
版本:MySQL 5.0.18-nt不过ord('€')得到226,但是chr(226)却得不到[€]而是[ ]
好奇怪的问题!

解决方案 »

  1.   

    http://lists.mysql.com/internals/27483没看懂怎么解决?
      

  2.   

    能的呀,我的MySQL 5.0.22!
    测试如下,我插入€的时候数据库自动转换为字符实体!mysql> select * from unitinfo;
    +----+---------------------------+-----------+------
    | id | unitname                  | position  | sort
    +----+---------------------------+-----------+------
    |  4 | 这个字符€能不能显示 | 1234,4321 | AA
    +----+---------------------------+-----------+------
    1 row in set (0.00 sec)
      

  3.   

    你用的是utf8吧。这个bug只存在于gbk数据库。
      

  4.   

    我试了latin1的可以。在gbk里则会自动中断。 Bug #11987
        mysql will truncate the text when the text contain GBK char:"0xA3A0" and "0xA1"
        Allow to store and retrieve even unassigned GBK codes.
        Like we did in Big5 earlier.
      have_gbk.inc, have_gbk.require, ctype_gbk.result, ctype_gbk.test:
        new file我看了mysql的bug列表,在5.0.11里解决了0xA3A0和0xA1的同类问题,可是我现在用的是5.0.24,存在0x80中断字符串的问题。
      

  5.   

    没有,我数据库字符集GBK!
    给你到处我数据库表结构你看看!DROP TABLE IF EXISTS `unitinfo`;
    CREATE TABLE `unitinfo` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `unitname` varchar(255) NOT NULL,
      `position` varchar(255) NOT NULL,
      `sort` varchar(255) NOT NULL,
      PRIMARY KEY  (`id`),
      KEY `unitname` (`unitname`)
    ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
      

  6.   

    你试试这个,其中testname设为text字段。set names gbk,character_set_client=binary;
    insert into `test` ('testname') values ('abc€defg');结果写入的是'abc',从€开始的后半段消失了。
      

  7.   

    按你说的方法,还是能!数据库表结构如下USE `test`;
    DROP TABLE IF EXISTS `test`;
    CREATE TABLE `test` (
      `testname` text NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=gbk;测试数据如下:mysql> select * from test;
    +-----------------------------+
    | testname                    |
    +-----------------------------+
    | €                     |
    | 测试€能不能插入数据库 |
    +-----------------------------+
    2 rows in set (0.00 sec)
      

  8.   

    按照你的方法在命令行下输入insert into `test` ('testname') values ('abc€defg');
    会提示ERROR 1406 (22001): Data too long for column 'testname' at row 1我就不明白你为什么要在命令行下插入€?
    数据不都是从表单提交插入到数据库的吗?
    测试的时候可以这样,可是投入使用的时候,数据库服务器你一定能用命令行去操作?
      

  9.   

    ('abc€defg');不是('abc€defg');€我也可以。我没说过€不行吧?请试'€'
      

  10.   

    我也没说过在要命令行下试。也没说过要试€。不知道是不是csdn上显示的帖子内容在你那里不同?你用的什么浏览器?
      

  11.   

    Firefox浏览器
    我测试的时候输入的数据全部是在表单里头!
    在表单的文本框输入 abc€defg 全部都能插入到数据库!
    但是插入到数据库中就显示为abc€defg!
    你说的:没说过要在命令行下试,是不是这个意思?PS:CSDN的帖子内容我显示正常,显示
    郁闷。mysql5出了个bug,€这个符号写不进去。有没有可能他们在显示帖子内容的时候将字符实体显示为原来的符号?
      

  12.   

    你还是换个ie浏览器来看本帖吧……我写的是€而不是€估计你的firefox问题把这个字符替换了。
      

  13.   

    没问题,是他们处理过了!我刚输入郁闷。mysql5出了个bug,€(这个是符号)这个符号写不进去。可是显示的是郁闷。mysql5出了个bug,€这个符号写不进去。他们肯定是在符号€提交后转成了€ ,然后他们又吧&转成了&
    让我输入的€无法显示!
      

  14.   

    两个浏览器都一样,€是符号!
    哥们,说完吃饭去了!
    要不等唠叨老大来给看看?
      

  15.   

    '€'的编码是0x80。这个字符在记事本里无法显示,显示为一个小黑块。但在ie和utrledit等编辑器里可以正常显示为'€'。
      

  16.   

    这是没有办法的事情,用utf-8吧
      

  17.   

    我的意思是€在输入到文本框中表单提交后会自动将它转换为€插入到数据库中,
    然后读取数据库后,输出到浏览器是€,在浏览器页面显示的是€!
      

  18.   

    文本框不会把€自动改成€。起码我用的ie6不会。即使换了个会自动换的,但总不能要求客户全换吧?不行估计就换回latin1了,可是latin1的中文搜索好象有点问题,经常搜出不匹配的结果。
      

  19.   

    那这样可以肯定这是mysql的中文bug了?在5.0.11时有过一个非常相似的bug,只不过不是这个字符。
    http://lists.mysql.com/internals/27483
      

  20.   

    对,显然是是bug用gbk编码作的时候存到数据库文件里的字符就已经是坏的了。用utf8,库里是好的,但是转成gbk的时候就转错了显示?,显然是mysql转化函数有问题这个问题显然不是A1A4 (middle dot), A1AA (em dash), A6E0-A6F5, and A8BB-A8C0这些字符的问题而是ascii扩展码的问题恭喜陈水,发现bug
      

  21.   

    mysql4.0及以前都是直接存到库里,不管字符是什么编码
    4.1以后就对存入库里字符的编码进行了拆分&判断,如果超过预设编码长度将提示字符太长
    显然这个拆分目前还有问题,估计它使用<=127作为判断的,因为双字节字符肯定能存单字节字符;gbk比较头疼的就是两个字节里面后一个可能是ascii码