• 关于解决mysql数据库乱码的问题


      最近在开发的过程中频繁的使用到了mysql'这款数据库,mysql的中文乱码问题一直让人头疼。以前遇到过几次,但是都一不小心就解决了,这次终于明白到底是怎么回事了。可能我下面说的这种解决方案只适合于我遇到的这种情况,同时这篇博客也只是对我个人问题的一个记载,可能对您没有帮助。

      中文乱码的根本原因在于字符的编码和解码格式不对,只要能保证数据的编码和解码格式一致就能解决乱码的问题。首先要先保证程序当中的中文字符是没有乱码的。

    个人习惯使用utf8编码格式。在安装mysql数据库的时候要添加utf8编码。

    其次,要把mysql的配置文件my.ini的编码改掉。注意,这里必须要改成utf8,在mysql中没有utf-8这种格式。

    重启mysql的服务才能生效。

    创建数据库时候也要指定utf8编码格式。

    也可以使用命令行的方式来设置编码  CREATE database testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

    创建表的时候也要指定数据的编码格式。

    create table `Course`
    (
    `id` int primary key,
    `name` varchar(50)
    )DEFAULT CHARSET=utf8;

    create table `UserInfo`
    (
    `id` int primary key,
    `password` varchar(50),
    `userName` varchar(50) ,
    `phone` varchar(50) ,
    `email` varchar(50)
    )DEFAULT CHARSET=utf8;

    保证这么几个步骤,数据库的乱码问题就得到了解决。

    附:mysql常用的查看编码的格式

    一、查看MySQL数据库服务器和数据库MySQL字符集。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mysql> show variables like '%char%';  
    +--------------------------+-------------------------------------+------  
    | 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 Server 5.0sharecharsets |......  
    +--------------------------+-------------------------------------+------

     二、查看MySQL数据表(table)的MySQL字符集。

    1
    2
    3
    4
    5
    6
    mysql> show table status from databasename(这里写的是你的数据库的名字) like '%countries%';  
    +-----------+--------+---------+------------+------+-----------------+------  
    Name      | Engine | Version | Row_format | Rows | Collation       |......  
    +-----------+--------+---------+------------+------+-----------------+------  
    | countries | InnoDB |      10 | Compact    |   11 | utf8_general_ci |......  
    +-----------+--------+---------+------------+------+-----------------+------

     三、查看MySQL数据列(column)的MySQL字符集。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mysql> show full columns from tablename(这里是你的数据表的名字);  
    +----------------------+-------------+-----------------+--------  
    | Field                | Type        | Collation       | .......  
    +----------------------+-------------+-----------------+--------  
    | countries_id         | int(11)     | NULL            | .......  
    | countries_name       | varchar(64) | utf8_general_ci | .......  
    | countries_iso_code_2 | char(2)     | utf8_general_ci | .......  
    | countries_iso_code_3 | char(3)     | utf8_general_ci | .......  
    | address_format_id    | int(11)     | NULL            | .......  
    +----------------------+-------------+-----------------+--------
  • 相关阅读:
    Traceroute侦测主机到目的主机之间所经路由情况的重要工具
    TCP/IP详解之IP协议
    Hello world
    [LeetCode] 198. 打家劫舍
    [LeetCode] 191. 位1的个数
    [LeetCode] 190. 颠倒二进制位
    python里的排序
    [LeetCode] 189. 旋转数组
    [LeetCode]187. 重复的DNA序列
    [LeetCode] 179. 最大数
  • 原文地址:https://www.cnblogs.com/1102whw/p/6837737.html
Copyright © 2020-2023  润新知