以下是我的四个设置关于编码的:
 1.$mysql_home\my.ini配置文件更改
    [mysql]
  -->default-character-set=utf8 (插入中文时提示data too long for column...)
    [mysqld]
  -->default-character-set=utf8
2.创建数据库时设置编码
  create database dbname CHARACTER SET utf8
 或修改$mysql_home\data目录下的对应数据库的db.opt配置文件
  default-character-set=utf8
  default-collation=utf8_chinese_ci
3.mysql客户端
  mysql>set names utf8;(这句根本无效,你重新连接服务器或者再开一个窗口用同一个账号或者不同账号连接服务器这些编码也会还原)
4.数据库连接串url
  url="jdbc:mysql://localhost:3306/taa?&useUnicode=true&characterEncoding=utf8";
从第四条设置大家应该看得出,我是写了个java用jdbc连接数据库,进行小小测试!  help !

解决方案 »

  1.   

    补充:
    3.mysql客户端
      mysql>set names utf8;
    (这句根本无效,你重启服务器然后再连接服务器或者再开一个窗口用同一个账号或者不同账号连接服务
     mysql>show variables like '%char%';这条语句可以验证第3条.
     mysql>flush privileges;
      

  2.   

    补充:创建表时 编码也为utf8,通过:show create table tablename验证过!----------------------
      

  3.   

    没看懂 楼主 说明的是什么。关键是要检查你的表中的数据。你的INI文件中只是设置默认的字符集,查实际的具体字符集是什么要看你的表中的定义。
    参考下贴中的检查方法,贴出结果。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  4.   


    意思是,我写了个java测试程序使用jdbc连接数据库,url="jdbc:mysql://localhost:3306/taa?useUnicode=true&characterEncoding=utf-8";
     java程序中获取含中文的数据时出现"????"乱码.如果改了my.ini 
        中的-->default-character-set=utf8 (插入中文时提示data too long for column...)
        show variables like '%char' 显示示的都为utf8,但出现插入中文时报错,故现在该设置我保留为
         default-character-set=latin1mysql> show create table tablett;
    +---------+--------------------------------------------------------------
    ---------------------------------------------------------+
    | Table   | Create Table
                                                             |
    +---------+--------------------------------------------------------------
    ---------------------------------------------------------+
    | tablett | CREATE TABLE `tablett` (
      `id` int(11) default NULL,
      `name` varchar(20) default NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +---------+--------------------------------------------------------------
    ---------------------------------------------------------+
    1 row in set (0.00 sec)
    mysql> show full columns from tablett;
    +-------+-------------+-----------------+------+-----+---------+-------+--------
    -------------------------+---------+
    | Field | Type        | Collation       | Null | Key | Default | Extra | Privile
    ges                      | Comment |
    +-------+-------------+-----------------+------+-----+---------+-------+--------
    -------------------------+---------+
    | id    | int(11)     | NULL            | YES  |     | NULL    |       | select,
    insert,update,references |         |
    | name  | varchar(20) | utf8_general_ci | YES  |     | NULL    |       | select,
    insert,update,references |         |
    +-------+-------------+-----------------+------+-----+---------+-------+--------
    -------------------------+---------+
    2 rows in set (0.00 sec)mysql> show variables like '%char%';
    +--------------------------+----------------------------------------------------
    -----+
    | Variable_name            | Value
         |
    +--------------------------+----------------------------------------------------
    -----+
    | character_set_client     | latin1
         |
    | character_set_connection | latin1
         |
    | character_set_database   | utf8
         |
    | character_set_filesystem | binary
         |
    | character_set_results    | latin1
         |
    | character_set_server     | latin1
         |
    | character_set_system     | utf8
         |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
    ets\ |
    +--------------------------+----------------------------------------------------
    -----+
    8 rows in set (0.01 sec)
      

  5.   

    在MYSQL命令行下,直接 set names 'gbk';然后检查一下能否看到中文。
      

  6.   


     我自己弄好了!谢谢.正在分析解决访问题的根本原因....想问几个额外问题:
    1.my.ini配置中-->default-character-set=utf8 (为什么会报错:"插入中文时提示data too long for column...")
    2.mysql>set names 字符编码  (重启服务器再连或使用其它或者同一账户连接服务器时,设置的编码为什么会还原???)
    3.有没有比较深入分析的资料推荐?
      

  7.   

    1.my.ini配置中-->default-character-set=utf8 (为什么会报错:"插入中文时提示data too long for column...")你定义的长度是多少? UTF一个汉字会用三个字节。没有看到你的表定义和INSERT时的字符集环境,无法分析2.mysql>set names 字符编码 (重启服务器再连或使用其它或者同一账户连接服务器时,设置的编码为什么会还原???)
    SET NAMES 只是改变了当前服务中的设置,当MYSQL重启时会重新从INI文件中取值或者使用默认值。3.有没有比较深入分析的资料推荐?#3楼 的回复中有一个帖子,
      

  8.   

     非常感谢,每次看你回复前基本上解决了^^.
    为什么会报错:"插入中文时提示data too long for column...")  这个确实不清楚.| Table   | Create Table
                                                             |
    +---------+------------------------------------------------------
    ---------------------------------------------------------+
    | tablett | CREATE TABLE `tablett` (
      `id` int(11) default NULL,
      `name` varchar(20) default NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +---------+------------------------------------------------------
    ---------------------------------------------------------+mysql> insert into tablett value(1,'兰兰');
    ERROR 1406 (22001): Data too long for column 'name' at row 1