利用load data infile命令导入userDesc.txt数据,数据导入后所有的中文居然全是乱码, 
mysql字符集设置如下: 
    -> ; 
+--------------------------+-------------------------------------------+ 
| Variable_name            | Value                                    | 
+--------------------------+-------------------------------------------+ 
| character_set_client    | utf8                                      | 
| character_set_connection | utf8                                      | 
| character_set_database  | utf8                                      | 
| character_set_filesystem | binary                                    | 
| character_set_results    | utf8                                      | 
| character_set_server    | utf8                                      | 
| character_set_system    | utf8                                      | 
| character_sets_dir      | D:\MySQL\MySQL Server 5.1\share\charsets\ | 
+--------------------------+-------------------------------------------+ 
userDesc.txt字符编码通过ultraedit改为:utf-8 
show create table显示表的字符编码为utf8 
执行上面的导入语句后发现表中数据全是乱码,不知何故,网上说要改的地方都试过,没作用呢
后来利用native2ascii 将userDesc.txt转换成utf8格式成一堆类似u6d59u6c5fu4e2du 这种显示的数据,导进去仍是这种数字与字母的组合,因为要从导入的几千条数据中筛选重复数据,查询到文件里面后仍是utf8格式的数据,看不了啊,试了很多办法都转不成可阅读形式的中文。
因此小弟有两个问题想请教:
一是为什么utf8编码设置的数据库导入中文是乱码,怎么解决;
二是utf8格式的文件怎么转换成人能阅读的中文。

希望大侠赐教!非常感谢

解决方案 »

  1.   

    show create table 贴出来看看
      

  2.   

    2、用支持UTF的软件,如WORD打开TXT文件
    1、用什么软件备份,导入是用什么软件,在MYSQL中?
      

  3.   

    此表字段字符集也是UTF8?
      

  4.   

    user表的结构如下:
    ---------------------+
    | user  | CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `uname` varchar(255) DEFAULT NULL,
      `num` varchar(64) DEFAULT NULL,
      `deptNum` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=27642 DEFAULT CHARSET=utf8 |
    +-------+----------------------------------------------------
    我是直接用load data infile命令把用逗号分隔开的数据内容到今数据库表的
    命令如下:
    load data infile 'd:\\userDesc.txt' into table test.user terminated by ',' enclosed by '"' lines terminated by '\r\n' (uname,num,deptNum);
      

  5.   

    我的txt文件是用excel保存成cvs得到的
      

  6.   

    用WORD打开userDesc.txt提示什么?有几种Unicode格式
      

  7.   

    你直接导入CSV文件,是否有乱码?为什么要用UTF8?
      

  8.   

    我直接导入csv得到的全是中文乱码,在未转字符编码前,用word或者记事本打开csv是能够正确显示的,但是导入数据库就成乱码
      

  9.   

    你在WORD中将CSV另存为UTF8的格式,再导入试试
      

  10.   

    csv另存为unicode格式的txt文件后,导入报错
    ERROR 1366 (HY000): Incorrect string value: '\xFF\xFE\x88l\xEA\x81...' for colum
    n 'uname' at row 1
      

  11.   

    呵呵,每看仔细您刚才说得建议,用word把cvs保存成utf8的txt后导入成功,也没有乱码问题了。谢谢了。不过我还是不大理解,数据库明明都是utf8编码,难倒是说我要导入的数据文件格式的问题,不是说utf8兼容其他格式吗。还有就是我如何能把utf8编码过后的中文数据转换成能够阅读的中文呢?刚才弄了老半天仍然是
    u6d59u6c5fu4e2du这种形式
      

  12.   

    想你上面的设置
    在txt 文件中用utf8保存不管文件中是不是出现乱码都不要管 只要保存设置utf8就可以mysql> show variables like "%character_set%"
        -> ;
    +--------------------------+----------------------------------------------------
    -----+
    | Variable_name            | Value
         |
    +--------------------------+----------------------------------------------------
    -----+
    | character_set_client     | utf8
         |
    | character_set_connection | utf8
         |
    | character_set_database   | utf8
         |
    | character_set_filesystem | binary
         |
    | character_set_results    | utf8
         |
    | character_set_server     | utf8
         |
    | character_set_system     | utf8
         |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\chars
    ets\ |
    +--------------------------+---------------------------------------------------- 
    之后你导入到数据库的就是正确的字符如果出现
        | A     | a            | 20
     16 |       |              |         |
     |  |  A    |  Kmユ徽U       |  2 0
     18 |       |              |         |
        | A     | 蝠・          | 20
     20 |       |              |         |
        | A     | 髦ソ鬟槫賦蝠・    | 20
     22 |       |              |         |
    ----+-------+--------------+---------+
    这样的乱码 他们不是乱码 是你的查看工具编码设置的问题其实存在数据库中的就是正确的汉字
      

  13.   

    应该是TXT文件格式问题,似乎UNICODE有多种格式,有UTF8、16的,MYSQL支持8的,估计
    要用这种格式才行。
    还有就是我如何能把utf8编码过后的中文数据转换成能够阅读的中文呢?
    通过WORD转换
      

  14.   

    我直接dos下登录的mysql啊,没有用查看工具
    用word打开全是字母和数字,转换不了呢
      

  15.   

    不是数据库utf8乱码, 是你导入的数据不是utf8, 我以前也试过好几次这种情况, 要把utf8编码的文件导入utf8设置的数据库才正常
      

  16.   

    有啊,选择文档可读编码
    然后预览了几个有关中文的和utf8的,仍是数字加字母,unicode却显示中文乱码
      

  17.   

    解决办法 更改你查看工具字符集编码 我的意思是你的console不能查看汉字编码你更改下
      

  18.   

    呵呵,如何更改,我之前在操作前执行了set names utf8,查看仍是中文乱码呢
      

  19.   

    修改注册表:
     [HKEY_CURRENT_USER/Console/%SystemRoot%_system32_cmd.exe] "CodePage"=dword:000003a8修改code为932-->日语,936-->中文GBK
    目前还不知道怎么修改成utf8的格式
    不过你可以下载个sqlyog工具查看是不是乱码就知道了
      

  20.   

    呵呵,谢谢,我看了下,code=936是GBK,还真不知道怎么改utf8,查了下,据说值是65001,呵呵,试一下去
      

  21.   

    值是65001
    mysql> select hex(65001);
    +------------+
    | hex(65001) |
    +------------+
    | FDE9       |
    +------------+
    1 row in set (0.00 sec)
    我的set的时候不行 当查看console编码的时候是空的 并不是utf8....你还是用工具看看 确认下原因在哪里是工具显示问题还是配置问题
      

  22.   

    可能有时存储是存对了,看到的却是乱码,那是因为你的客户终端的编码设置不对应,加set names '编码'应该就能正常显示了。