• MySQL 中文乱码解决


    測试环境:服务端和client均为win7,MySql数据库、表字符集为utf-8,字段字符集与表一致。

    1、使用mysql命令进行操作时的乱码问题解决。

    (1)设置当前字符集

    set names gbk 

    (2)改动单个字符集參数

    使用命令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     | latin1                                 |
    | character_set_system     | utf8                                   |
    | character_sets_dir       | D:mysql-5.6.25-winx64sharecharsets |
    +--------------------------+----------------------------------------+

    改动单个字符集:

    set character_set_results=gbk

    注意:该方法设置的參数在server重新启动后失效。

    2、mysqldump导出时乱码问题解决

    (1)导出有两种情况:一是导出表结构,二是导出表结构和数据。

    导出全表:

    mysqldump -uroot -p [databasename] --table [tablename]

    仅仅导出表结构:

    mysqldump -uroot -p [databasename] --table [tablename] -d

    (2)实验

    经測试,在控制台环境,导出表结构时,不管怎么设置--default-character-set參数,均无法正常显示字段凝视中的中文,命令例如以下:

    mysqldump -uroot -p --default-character-set=gbk test --table t_data

    但表数据中的中文能够正常显示(通过设置--default-character-set=gbk)。

    可是,若导出为文件,则能够正常显示,命令示比例如以下:

    mysqldump -uroot -p --default-character-set=gbk mydb --table t_data -d > t_data.sql

    有趣的是,无论--default-character-set设置为何值(gbk,utf8,latin1)均能正常显示,在控制台显示乱码和控制台本身有一定的关系。

    (3)总结

    在控制台环境,表结构中的中文字段凝视总是不能正常显示,使用管道输出到文件。则总能正常显示(使用UltraEdit打开)。

    表数据中必须通过參数设置--default-character-set=gbk来控制正常输出中文,包含控制台显示或用管道输出到文件。

    也就是说--default-character-set=gbk 仅对表数据的编码处理生效。对表结构字段凝视中的中文无效。


    补充:

    Java 连接MySQL。中文存储到数据库后为乱码。

    解决:在JDBC数据库连接后增加编码说明串,比如:

    jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=GBK



    參考:

    1、查看创建表使用的字符集:

    show create table [tableName] 

    2、查看表字段使用的字符集:

    show full columns from [tableName]

    3、查看表

    show tables;

    4、查看表信息

    desc [tablename]

    5、查看数据库

    show databases;

    6、查看数据库信息

    show create database test;



  • 相关阅读:
    Queue
    List
    面试1
    野指针和空指针
    指针的定义和使用
    多文件编程
    函数声明
    函数样式
    字符串比较
    函数的定义和使用
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6742745.html
Copyright © 2020-2023  润新知