mysql想支持中文,要把编码方式改成什么?改了gbk和gb2312方式时用varchar定义字段时写入中文老提示有错误,说太长溢出。不管你定义有多大,都有这个问题,请问怎么解决呢?

解决方案 »

  1.   

    不会阿,那你设置成UTF-8试一下
      

  2.   

    改成utf-8还是有问题
    number  name
    1        我
    2        nicolas
    Description
    data too long for  column 'name' at row 1
      

  3.   

    我用gbk就挺好的,为何你不行.....
      

  4.   

    一、Windows
    1、中止MySQL服务
    2、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可
    3、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
    4、启动MySQL服务
    二、Linux
    1、中止MySQL服务(bin/mysqladmin -u root shutdown)
    2、在/etc/下找到my.cnf,如果没有就把MySQL的安装目录下的support-files目录下的my-medium.cnf复制到/etc/下并改名为my.cnf即可
    3、打开my.cnf以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
    4、启动MySQL服务(bin/mysqld_safe &)
    非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为UTF-8了,创建新表格的时候无需再次设置
    需要注意的是,当前数据库中已经存在的数据仍保留现有的编码方式,因此需要自行转码,方法在网上有很多,不再赘述。查看数据库字符集的若干命令:
     show variables like 'character\_set\_%';
     SHOW VARIABLES LIKE 'collation_%';
    好像命令行运行的MySQL命令不支持UTF8,插入后好像什么都没有,所以
    插入数据时可以执行 set names gbk;
    之后 set names utf8;
    或者使用交互工具插入。下面是我的测试例子
    mysql> use sofa
    Database changed
    mysql> select * from test;
    +------+--------+
    | id   | name   |
    +------+--------+
    |    2 | 娴嬭瘯   |
    |    1 | 娴嬭瘯   |
    +------+--------+
    2 rows in set (0.00 sec)mysql> set names gbk;
    Query OK, 0 rows affected (0.00 sec)mysql> select * from test;
    +------+------+
    | id   | name |
    +------+------+
    |    2 | 测试     |
    |    1 | 测试     |
    +------+------+
    2 rows in set (0.00 sec)mysql> show create table test;
    +-------+---------------------------------------------------
    ------------+
    | Table | Create Table
                |
    +-------+---------------------------------------------------
    ------------+
    | test  | CREATE TABLE `test` (
      `id` int(11) DEFAULT NULL,
      `name` varchar(10) DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
    +-------+---------------------------------------------------
    ------------+
    1 row in set (0.17 sec)mysql> insert into test value(3,'明天')
        -> ;
    Query OK, 1 row affected (0.14 sec)mysql> select * from test;
    +------+------+
    | id   | name |
    +------+------+
    |    3 | 明天     |
    |    2 | 测试     |
    |    1 | 测试     |
    +------+------+
    3 rows in set (0.08 sec)
      

  5.   

    在my.ini里找到 
    sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION” 
    把其中的 
    STRICT_TRANS_TABLES, 
    去掉,然后重启mysql就ok了  
      

  6.   

    除了 my.ini 里改,如果表是先前创建的,还要修改表的字符集和列的字符集啊!我先前也碰过这个问题。