zoukankan      html  css  js  c++  java
  • MySQL 内部设置的编码与表中定义的编码问题

    有时候,我们向表中插入中文数据的字符串,可是却不能向表中插入该中文数据的字符串,其实是编码解码问题。MySQL 内部设置的编码与定义表的时候的编码不同,导致编码异常,要么就是不能够将数据插入到数据表中,要么就是数据已经插入到了编码表中了,可是却会出现乱码的情况。下面,是我个人的解决方案,能够实现插入中文数据:

    查看 MySQL 内部设置的编码

    首先就是要查看 MySQL 内部设置的编码。查看包含character开头的全局变量

    SHOW VARIABLES LIKE 'character%';

    执行结果:

    解决方案

    修改MySQL内部设置的编码

    修改 client、connection、results、database、server的编码为 GBK 或 UTF8

    1. 修改客户端的编码为 UTF8

      SET character_set_client = utf8;
    2. 修改连接的编码为 UTF8

      SET character_set_connection = utf8;
    3. 修改查询的结果编码为 UTF8

      SET character_set_results = utf8;
    4. 修改数据库编码为 UTF8

      SET character_set_database = utf8;
    5. 修改数据库服务器的编码为 UTF8
      SET character_set_server = utf8;

    再次查看MySQL内部编码,查看是否修改成功

    SHOW VARIABLES LIKE 'character%';

    修改表中设置的编码

    查看创建表的SQL语句

    SHOW CREATE TABLE 表名;

    如students表:

    SHOW CREATE TABLE students;

    该表是我为了测试已经创建好的,结果如下:

    CREATE TABLE `students` (
      `Id` int(30) NOT NULL,
      `Name` varchar(10) DEFAULT NULL,
      `Age` int(4) DEFAULT NULL,
      `Gender` varchar(25) DEFAULT NULL,
      PRIMARY KEY (`Id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1

    可以看到CHARSET=latin1,即students表的编码格式为latin1。

    修改表中的编码格式

    ALTER TABLE 表名 CONVERT TO CHARACTER SET 新编码格式 COLLATE 排序规则;

    如上面查看的students表:

    ALTER TABLE students CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

    将students表的编码格式修改为utf8,MySQL中的排序规则为utf8_general_ci

    修改成功后,再次查看student表的SQL:

    CREATE TABLE `students` (
      `Id` int(30) NOT NULL,
      `Name` varchar(10) DEFAULT NULL,
      `Age` int(4) DEFAULT NULL,
      `Gender` varchar(25) DEFAULT NULL,
      PRIMARY KEY (`Id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    发现已经修改成功了。这个时候就可以向students表中添加中文数据了。

  • 相关阅读:
    PetaLinux 生成 Zynq 操作系统
    单片机、微控制器和微处理器有什么区别
    嵌入式基础概念系列(1) —— GPIO
    学中杂记
    Spring学习笔记
    jdbc一点小笔记
    JSP学习
    Servlet学习的一些笔记
    接触Struts2的ModelDriven<>接口
    android-dialog的位置
  • 原文地址:https://www.cnblogs.com/liyihua/p/12309804.html
Copyright © 2011-2022 走看看