zoukankan      html  css  js  c++  java
  • mysql中文乱码或者中文报错

       当出现中文乱码或者执行包含中文的语句报错时,十有八九就是编码的问题,我们可以执行下面语句查看编码:  

      SHOW VARIABLES LIKE '%char%'

      显示

      

        其中character_set_server是服务器编码:latin1,这个也是mysql默认的编码,我们可以使用set命令修改这个编码:  

      SET character_set_server = utf8;

      但是这个set修改是临时的,如果mysql重启之后,这个编码会重新设置成默认编码latin1

       所以我们最好是去修改配置文件中的默认编码:

      先进入mysql的主目录,在目录下会有个my.cnf文件,打开查看里面有没有mysqld节点配置,我这里是没有的,里面是:  

      !includedir /etc/mysql/conf.d/
      !includedir /etc/mysql/mysql.conf.d/

      想必这两个指的是mysql配置文件的目录,然后分别进入这两个目录,发现/etc/mysql/mysql.conf.d/目录下的mysqld.cnf文件里有mysqld节点配置,然后将上面配置加上(存在则修改)即可:

      

       如果都没有找到mysqld节点,那直接在my.cnf中加上mysqld节点,再将上面的配置加上(存在则修改)即可

       修改完成需要重启下mysql服务:service mysql restart

      注意,这里修改之后,只对重新创建的表才能生效,对于已经存在的表,我们修改手动修改它的编码:  

      -- utf8_general_ci表示utf8编码,latin1_swedish_ci表示latin1编码,是默认编码
      -- 查看表编码
      SELECT TABLE_COLLATION FROM information_schema.`TABLES` WHERE TABLE_NAME='table_name';
      -- 查看列编码
      SELECT COLLATION_NAME FROM information_schema.`COLUMNS` WHERE TABLE_NAME='table_name' AND COLUMN_NAME='column_name';

      -- 修改表编码   ALTER TABLE [表名] CONVERT TO CHARACTER SET utf8;   -- 修改列编码   ALTER TABLE [表名] MODIFY [列名] [类型] CHARACTER SET utf8;

      另外,如果修改了mysql的服务器的字符编码为utf8,但是还是现实中文乱码,那么可能是客户端编码问题,执行 SHOW VARIABLES LIKE '%char%' 查看character_set_client参数是否是utf8,如果不是,则在配置文件中添加节点:  

      [client]
      default-character-set=utf8
  • 相关阅读:
    接口测试
    JMeter 插件管理
    JMeter IP欺骗压测
    Maven初窥门径
    都是分号惹的祸 ORA-00911
    插拔式设计思想
    第七章、Ajango自带auth模块
    第七章、中间件续写
    第七章、中间件
    第六章、Cookies和Session
  • 原文地址:https://www.cnblogs.com/shanfeng1000/p/12269556.html
Copyright © 2011-2022 走看看