乱码问题是很让人抓狂的问题,下面我将记录一下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字段即可。

MySQL数据库乱码 - Linux下乱码问题一的更多相关文章

  1. kettle工具同步数据乱码-Linux下乱码问题二

    将写好的kettle工程部署到Linux下后,同步的数据都成了乱码,幸运的是数据库有备份. 下面就说一下,kettle工程如何同步两端编码格式都是utf8的数据库. 我们只需要更改kettle数据库连 ...

  2. mysql数据库在Linux下安装与配置

      mysql是一种开放源代码的关系型数据库系统(RDBMS),使用最常用的数据库管理语言--结构化查询语句(SQL)进行数据库管理. 由于mysql的开源,因此任何人都可以在General Publ ...

  3. mysql数据库在linux下的导出和导入及每天的备份

    mysql数据库的导出,导入 1. 导出数据库为sql文件 mysqldump 数据库名 -uroot -p > xxx.sql 导出数据表结构和数据 eg.   mysqldump cloud ...

  4. 【mysql数据库】Linux下mysql安装连接全过程(含有问题详解)

    本次安装操作在腾讯云上实现(版本:CentOS Linux release 7.4.1708 (Core) ). 根据教程实现(中途各种挖坑,填坑...),地址:http://www.runoob.c ...

  5. 09 Mysql数据库在Linux下的使用

    1. 创建数据库 1.1 启动Mysql [root@localhost ~]# mysql -h127.0.0.1 -uroot -pmysql Warning: Using a password ...

  6. windows下的mysql迁移到linux下

    最近做毕业设计,需要把windows下的mysql移植到linux下 曾经有过在window下移植mysql数据库的经验,只需要把msql的数据文件复制到另一台安装mysql的机器的数据存放位置,然后 ...

  7. MySQL入门——在Linux下安装和卸载MySQL

    MySQL入门——在Linux下安装和卸载MySQL 摘要:本文主要学习了如何在Linux系统中安装和卸载MySQL数据库. 查看有没有安装过MySQL 使用命令查看有没有安装过: [root@loc ...

  8. MySQL入门——在Linux下安装和卸载MariaDB

    MySQL入门——在Linux下安装和卸载MariaDB 摘要:本文主要学习了如何在Linux系统中安装和卸载MariaDB数据库. 查看有没有安装过MariaDB 使用命令查看有没有安装过: [ro ...

  9. MySQL数据库InnoDB引擎下服务器断电数据恢复

    说明: 线上的一台MySQL数据库服务器突然断电,造成系统故障无法启动,重新安装系统后,找到之前的MySQL数据库文件夹. 问题: 通过复制文件的方式对之前的MySQL数据库进行恢复,发现在程序调用时 ...

随机推荐

  1. linux 安装mysql后修改密码出现问题

    新安装的mysql 执行命令时候出现错误: 一 错误信息: ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using ...

  2. linux环境下配置github远程仓库

    1.设置git用户和邮箱 git config --global user.name "fujinzhou" git config --global user.email &quo ...

  3. PHP 魔术方法 __get __set (二)

    慢慢长寻夜,明月高空挂 __get() - 读取不可访问属性的值时,__get() 会被调用 __set() - 在给不可访问属性赋值时,__set() 会被调用 <?php /** * 清晰的 ...

  4. 调用 GetProcAddress 失败,在 ISAPI 筛选器 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" 上

    1.选择网站的ISAPI筛选器,设置ASP.NET的 aspnet_filter.dll右键恢复为父项 如果问题还未解决,执行第2步: 2.是否注册了asp.net,打开cmd运行:C:\Window ...

  5. javascript常用对象

    A,window对象 window对象是浏览器模型对象的顶层对象 常用属性: screen:客户端的屏幕和显示性能的信息. history:客户端访问过的url信息 location:当前url链接的 ...

  6. maven项目转eclipse工程的命令:eclipse.bat

    call mvn clean:clean call mvn eclipse:eclipse -DdownloadSources=true @pause 复制以上内容,保存为eclipse.bat 以后 ...

  7. Spark Streaming揭秘 Day15 No Receivers方式思考

    Spark Streaming揭秘 Day15 No Receivers方式思考 在前面也有比较多的篇幅介绍了Receiver在SparkStreaming中的应用,但是我们也会发现,传统的Recei ...

  8. 《WPF程序设计指南》读书笔记——第4章 按钮与其他控件

    1.Button类 using System; using System.Windows; using System.Windows.Media; using System.Windows.Input ...

  9. 1064. Complete Binary Search Tree

    二叉排序树: http://www.patest.cn/contests/pat-a-practise/1064 #include <iostream> #include <vect ...

  10. Kinetic使用注意点--circle

    new Circle(config) 参数: config:包含所有配置项的对象. { radius: "半径", fill: "填充色", fillRGB: ...