我的这个问题有点怪,在网上找了很长时间都没有找到相似的问题。
问题是这样的:
我一切按照默认安装mysql-6.0.2-alpha-win32,在字符时选择多国语言支持,也就是在上面看到的有“日本语”的那个选项。安装好后,在命令行创建一个数据库,然后在数据库下创建一个表,然后向表里插入数据,但只要是中文就无法插入,始终要报错。
具体的命令如下:
create database tt;
use tt
create table tt(
id int,
txt char(50)
);
insert into tt values('2','中文');mysql> insert into tt values('2','中文');
ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'txt'
at row 1(声明一下,我以前安装的是Mysql 5.0版本的,也是同样的问题,我以为是版本问题。现在这个版本是我重新下载安装的,问题一模一样)我在网上看到一些建议,查看目录下的my.ini文件,其中有两个default-character-set都默认为utf8,我也在创建数据库、表的时候指定字符编码为utf8,但问题还是如上一样。我用的是SQLyog图形界面,在图形界面下向表中插入汉字后无法保存,一保存汉字就消失,没有丝毫的办法。最后我将my.ini第57行(第一个)的default-character-set改成gbk,重新启动Mysql,然后重新建立一个新的数据库就可以插入中文了,然后用select返回的也是正常的中文。但在SQLyog图形界面显示的却是乱码,同样在SQLyog下无法保存输入的中文,一保存就文字就消失。可是别人同样的设置在SQLyog下可以很自然的插入中文,不知道我的问题到底是什么?大概问题就是这样,我是开始学习数据库,很多东西都不太懂,现在遇到这个问题确实很头疼。望各位指教!!谢谢。

解决方案 »

  1.   

    看来星期天高手也不在
    我的问题依旧没有解决,utf8下无法插入中文,很奇怪
    继续等待高手的出现!!!
      

  2.   

    把所有编码改为GBK 
    utf-8下是无法插入中文的 
    必须为GBK
      

  3.   

    我现在将所有的编码都该为utf-8,然后在网页中插入数据(使用hibernate),在SQLyog下查看时中文全是乱码。
    我写了一个hibernate测试程序,执行这个java application后在SQLyog下查看显示的是正确的中文。测试程序中插入中文代码如下:SessionFactory sf = new Configuration().configure().buildSessionFactory();
    Session session = sf.openSession();
    Transaction tx = session.beginTransaction();
    Notice notice = new Notice();
    notice.setTitle("中文");
    notice.setContent("中文");
    session.save(notice);
    tx.commit();
    session.close();是否这个问题跟我的struts或者和tomcat中相关字符编码有关而不是跟hibernate以及mysql有关?上面的代码中我输入的“中文”是什么编码呢?我在eclipse里设置字符的时候指定是utf-8,是不是此时我这个“中文”也是utf-8编码呢?
    还有一点就是上面我正确的插入了中文,那么只有将从网页中传递到hibernate的字符设置成跟此时“中文”字符一样是否就可以正确的插入中文?思维有点混乱,希望得到大家的帮助
    谢谢!!
      

  4.   

    你用的是SQLyog没有用过,我想应该是它的问题。该软件不编写时可能没有考虑到字符集的问题。我用的Navicat MySQL也有类似的问题。
        其实你已经解决了。将my.ini的default-character-set改成gbk,重新启动Mysql,再将数据库的character set设置为gbk就可以了。是UI在搞鬼
      

  5.   

    你设的没有问题。。UTF-8可以显中文。
    在你插入前打入
    set NAMES UTF8;(忘了是UTF-8还是UTF8了)
    在你查询前也要打入。。
    当然了我指的是两个环境。MYSQL四级设置。
    一SERVER 
    二DATABASE
    三TABLE
    四CONNECTION你要编程写入东西。首先CLIENT和SERVER要一致。
    问题出在你当前的连接不是一样的编码。用上面的指令打入。即可。
    具体的JAVA不懂。
    C的。我前两天还写了。测试都正常。而且是LINUX下用的很生僻的字
    http://javado.blog.hexun.com/14325139_d.html
      

  6.   

    你要知道你的输入终端的字符编码不是UTF8的,所以你再怎么输入也无济于事。
    在一个SESSION还没有到期前在终端输入set names UTF8;记得。
      

  7.   

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

  8.   

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