zoukankan      html  css  js  c++  java
  • MySQL数据库乱码

    乱码问题是很让人抓狂的问题,下面我将记录一下linux下mysql乱码问题的解决方法。

    mysql在linux下乱码问题

    一、操作

    mysql默认字符集是latin1,但是我们大部分程序使用的字符集是utf8,我们就需要修改mysql的字符集了。

    1)查看默认编码

    show variables like 'character%';

    +--------------------------+----------------------------+ 
    | Variable_name | Value | 
    +--------------------------+----------------------------+ 
    | character_set_client | latin1 | 
    | character_set_connection | latin1 | 
    | character_set_database | latin1 | 
    | character_set_filesystem | binary | 
    | character_set_results | latin1 | 
    | character_set_server | latin1 | 
    | character_set_system | utf8 | 
    | character_sets_dir | /usr/share/mysql/charsets/ | 
    +--------------------------+----------------------------+ 

    Mysql下默认的编码是latin1

    2)查看默认排序方式

    show variables like 'collation_%';

    +----------------------+-----------------+ 
    | Variable_name        | Value           | 
    +----------------------+-----------------+ 
    | collation_connection | latin1_swedish_ci | 
    | collation_database   | latin1_swedish_ci | 
    | collation_server     | latin1_swedish_ci | 
    +----------------------+-----------------+ 

    3)修改默认字符集

    修改文件/etc/my.cnf内容

    在[client]下添加如下语句

    default-character-set=utf8  

    在[mysqld]下添加

    default-character-set=utf8

    init_connect='SET NAMES utf8'    ##设定连接mysql是使用UTF8编码

    修改好后,重启mysql服务即可

    4)另外一种修改字符编码方法

    登录mysql后,输入如下内容

    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 ; 

    5)重新查看

    show variables like 'character%';

    +--------------------------+---------------------------------+ 
    | 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       |/usr/share/mysql/charsets/
    +--------------------------+---------------------------------+

    show variables like 'collation_%';

    +----------------------+-----------------+ 
    | Variable_name        | Value           | 
    +----------------------+-----------------+ 
    | collation_connection | utf8_general_ci | 
    | collation_database   | utf8_general_ci | 
    | collation_server     | utf8_general_ci | 
    +----------------------+-----------------+ 

    6)使用JDBC连接mysql时需要将连接字符串改为如下方式:

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

    已utf8的方式连接

    二、概念

    character-set-server/default-character-set:服务器字符集,默认情况下所采用的。

    character-set-database:数据库字符集。

    character-set-table:数据库表字符集。

    character-set-client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。

    character-set-results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。

    统一设置字符集编码使用语句:set names utf8

    三、导入导出防止乱码

    1.导出数据库使用命令(在cmd下输入)

    mysqldump -u用户名 -p密码 -h服务器地址 数据库名称 --default-character-set=utf8 --hex-blob >导出数据库.sql

     --default-character-set=utf8 代表使用urf8编码导出数据

     --hex-blob 代表以16进制导出数据库

    2.导入数据库使用命令(在cmd下输入)

    mysql -u用户名 -p密码 -h服务器地址 数据库名称 --default-character-set=utf8 --hex-blob  <导出数据库.sql

    除了使用上面的命令导入数据库外,还可以登录mysql,使用source命令导入

    mysql> source 导出数据库.sql

    注:blob字段存放的是二进制数据,故其没有字符集编码,在window和linux使用以上方式还是会有乱码的问题,故建议将blob类型修改为text类型,才不会出现乱码。blob类型数据往text类型转换,自己写一个简单的代码,从blob读出数据以字符串的形式存到text字段即可。

  • 相关阅读:
    面向对象的七大设计原则
    06章 初始继承和多态
    面向太阳,不问春暖花开
    05章 体检套餐管理系统
    02章《深入C#数据类型》项目经理评分
    MongoDB快速入门(十二) -- 索引
    MongoDB快速入门(十一)- sort() 方法
    MongoDB快速入门(十)- Limit(),Skip() 方法
    MongoDB快速入门(九)- 投影
    MongoDB快速入门(八)- 删除文档
  • 原文地址:https://www.cnblogs.com/james1207/p/3266566.html
Copyright © 2011-2022 走看看