• 总结--解决 mysql 中文乱码


    首先分析一下导致mysql 中文乱码的原因:

    1、建表时使用了latin 编码

    2、连接数据库的编码没有指定

    3、写入时就已经乱码(这种情况需要自己检查源数据了)

    解决方法总结:

    1.创建库时指定编码:
    create database testdb default charset utf8 

    2.修改库的编码:

     ALTER DATABASE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

    3.修改表的编码:

    ALTER TABLE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 

    4.修改字段的编码: 

    ALTER TABLE `tablename` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 

    是将MYSQL数据库tablename表中 dd的字段编码改能够该为utf8

    诊断过程:

    1、SHOW CREATE TABLE  testtable; 使用建表语句查看当前表的编码如果是拉丁latin编码,则可以使用

    ALTER DATABASE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 

    进行更改表的编码

    2、再次使用show create table 命令查看,表编码

    如果发现当前列中编码也不正确,那么使用

    ALTER TABLE `tablename` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 

    进行更扆dd这一列的编码

    3、如果还是正确,那么查看下你的代码里的连接方式是否正确

    jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8

    我这里是java方面的连接,这里指定了连接的编码utf-8

    到这里应该就可以了

    4、修改系统默认编码

    mysql> SHOW VARIABLES LIKE 'character%';
    
    mysql> SET character_set_client = utf8 ; 
    mysql> SET character_set_connection = utf8 ; 
    mysql> SET character_set_database = utf8 ; 
    mysql> SET character_set_results = utf8 ; 
    mysql> SET character_set_server = utf8 ; 
    
    mysql> SET collation_connection = utf8 ; 
    mysql> SET collation_database = utf8 ; 
    mysql> SET collation_server = utf8 ; 

    参考文章:

    1、http://www.2cto.com/database/201307/227538.html

    2、http://zhidao.baidu.com/link?url=WtACC0jMIsOAk6eX6kJk8qjQhga28VgsYpNPY4Oc9sWH5fgU2OQm1An-IGiV4yZ-PE80VJ5ZB-YxrAVW3Jo8ua

  • 相关阅读:
    QtDBus编程详解
    QProcess详解
    python 爬虫 亚航 指定日期间的航线
    python 模块
    centos postgres 安装、远程连接
    python 爬虫 anyproxy
    python_scrapy_filespipe重写
    python_xpath
    常见问题汇总
    python_scrapy_log日志
  • 原文地址:https://www.cnblogs.com/amosli/p/4216839.html
Copyright © 2020-2023  润新知