原帖:http://topic.csdn.net/u/20110805/19/e23e6cec-2955-4944-a31b-9bdb58397a31.html版主给的回答很完全,可以解决大部分的问题,不过我的情况感觉很特殊了。my.ini
default-character-set=gbk
mysql> show variables like '%char%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value|
+--------------------------+---------------------------------------------------------+
| character_set_client | gbk|
| character_set_connection | gbk|
| character_set_database | gbk|
| character_set_filesystem | binary|
| character_set_results | gbk|
| character_set_server | gbk|
| character_set_system | utf8|
| character_sets_dir | D:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
mysql> show create table t;编码是gbk唯一的不同是文本文档是utf8导入进去的时候,一切看起来是正常,不存在乱码。问题是
SELECT * FROM t WHERE name='张三';查询不到内容.
需要 SELECT * FROM t WHERE name LIKE '张三%';这样才可以,感觉后面有空格或其他内容?

解决方案 »

  1.   

    mysql> select * from t;
    +----+-------+
    | id | name  |
    +----+-------+
     | 1 | 张三
     | 2 | 李四
    |  3 | 王五  |
    +----+-------+查询的是这样的结果,只有最后一行是正确的,不管导入多少数据,最后一行的就OK,很纳闷!
      

  2.   

    select length(name),hex(name) 贴出来看一下。
      

  3.   

    找到原因了
    原来是个回车符号
    LOAD DATA INFILE 'D:/data.txt' INTO TABLE t CHARACTER SET UTF8 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';文本文档设置为UTF-8,另外导入的时候编码也是UTF-8,最后一个是我忽略了就是换行是回车换行!
      

  4.   

    在该帖的回复如下,从这里2楼的输出结果我更确定是 \r 的捣乱了,最后一行因为没有换行“\r\n”,所以显示是正确的,其它行因为有 \r,所以把最后显示的 “|”给“回”掉了。
    可以使用某些编辑器的 dos 转换成 unix 格式的功能进行导入文件的格式转换,这样会去掉文本文件中的 \r,你再导入应该就正常了。