zoukankan      html  css  js  c++  java
  • mysql导入数据之乱码分析及解决办法

    乱码有很多种情况引起,不过通常情况都是由于各种编码不一致问题导致,今天遇到的乱码问题是:文件编码和数据库连接编码不一致的问题导致,由于要添加初始化数据,批量执行,采用source命令,

    root@(none) 03:14:49>use test
    Database changed
    root@test 03:14:53>show create table rule\G;
    *************************** 1. row ***************************
    Table: rule
    Create Table: CREATE TABLE `rule` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
    `name` varchar(64) NOT NULL COMMENT '规则名,如:分享',
    `status` tinyint(4) NOT NULL COMMENT '状态',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;
    root@test 03:15:06>show variables like "%character%";
    +--------------------------+----------------------------------+
    | 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 |
    +--------------------------+----------------------------------+
    7 rows in set (0.00 sec)

    root@test 03:17:14>

    可以看到客户端连接进来的编码方式是gbk,当我直接使用

    root@(none) 03:19:02>source a.sql;

    root@test 03:20:45>select * from rule;
    +----+--------------------+--------------------------------+

    | id | name          | status |

    +----+--------------------+--------------------------------+
    |  1 | 娴囨按             |      0 |

    |  2 | 鍏虫敞鎺屾煖鎺ㄦ帹 |        0 |

    +----+--------------------+--------------------------------+
    2 rows in set (0.00 sec)

    root@test 03:20:46>

    乱码,为什么?我客户端的连接,表的编码格式是一样的!!

    再看下a.sql的编码方式:

    $file a.sql
    a.sql: UTF-8 Unicode text, with CRLF line terminators

    文件是utf8编码,再运行下看看:

    root@test 02:35:36>set names utf8;
    Query OK, 0 rows affected (0.00 sec)
    root@test 02:35:57>truncate table rule;
    Query OK, 0 rows affected (0.00 sec)
    root@test 02:36:04>source a.sql;
    Query OK, 1 row affected (0.00 sec)

    Query OK, 1 row affected (0.00 sec)
    root@test 02:36:08>select * from rule;
    +----+--------------------+--------------------------------+
    | id | name | status |
    +----+--------------------+--------------------------------+
    | 1 | 娴囨按 | 0 |
    | 2 | 鍏虫敞鎺屾煖鎺ㄦ帹 | 0 |
    +----+--------------------+--------------------------------+
    2 rows in set (0.00 sec)

    root@test 02:36:10>set names gbk;
    Query OK, 0 rows affected (0.00 sec)

    root@test 02:36:23>select * from rule;
    +----+--------------+--------------------------------+
    | id | name | status |
    +----+--------------+--------------------------------+
    | 1 | 灌水 | 0 |
    | 2 | 打酱油 | 0 |
    +----+--------------+--------------------------------+
    2 rows in set (0.00 sec)

    root@test 02:36:25>




     

  • 相关阅读:
    Java实现 洛谷 P1060 开心的金明
    (Java实现) 洛谷 P1605 迷宫
    (Java实现) 洛谷 P1605 迷宫
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
    Java实现 洛谷 P1064 金明的预算方案
    (Java实现) 洛谷 P1031 均分纸牌
    QT树莓派交叉编译环开发环境搭建(附多个exe工具下载链接)
    武则天红人对唐睿宗的桃色报复(如此缺少城府,注定了要在宫廷中过早地出局)
  • 原文地址:https://www.cnblogs.com/sunss/p/2257275.html
Copyright © 2011-2022 走看看