• mysql乱码问题


    mysql乱码问题

    出现乱码的原因:因为当前的CMD客户端窗口与数据库本身及库,表的编码格式不一致导致的。所以当出现乱码的时候,请排查:

    * sql文件的编码格式
    * 当前CMD客户端窗口的编码格式
    * 数据库服务本身的编码格式
    * 数据库的编码格式
    * 表结构的编码格式
    

    我一在次更新客户环境中出现了,mysql命令source文件后,出现乱码的情况。但是使用navicat执行sql确没有问题。

    这是命令行中查看字符编码得到结果:

    这是我使用navicat查看字符编码得到的结果:

    从上图中可以看到MYSQL有六处使用了字符集,分别为:
    与服务器端相关:database、server、system(永远无法修改,就是utf-8);

    database 为数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置
    server 为服务器安装时指定的默认字符集设定
    system 为数据库系统使用的字符集设定

    与客户端相关:connection、client、results :

    client 为客户端使用的字符集
    connection 为连接数据库的字符集调协类型,如果程序没有指明连接数据库使用的字符集类型则按照服务器端默认的字符集设置
    results 为数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。

    通过上图和解释,可以得出,只要客户端与服务端的编码格式不一致就会导致筹码问题。只不过我这里只是这个问题,还有如表,数据库,sql文件的字符编码不一致,都会导致乱码。

    解决方法

    一、 在当前的CMD中修改字符集,只不过只能在当前会话生效:

    mysql > set names utf8;
    

    二、在连接数据库时就定义字符集编码:

    ~]# mysql -uxxx -pxxx -hxxxx --default-character-set=utf8
    

    三、最有效的办法,就是在mysql服务器端修改mysql的配置文件,加入如下配置:

    ~]# cat /etc/my.cnf
    [client]
    default-character-set=utf8
    
    [mysqld]
    character-set-server=utf8
    
  • 相关阅读:
    第七周进度报告
    解析极限编程阅读笔记02
    解析极限编程阅读笔记01
    第六周进度报告
    合作开发项目-地铁线路查询
    构建之法阅读笔记03
    关于DeferredResult的思考
    java实现任务调度
    java里面如何提升编写速度
    收集整理mysql数据库设计规范与原则
  • 原文地址:https://www.cnblogs.com/dance-walter/p/9016666.html
Copyright © 2020-2023  润新知