Home > Database > Mysql Tutorial > MySQL数据库乱码-Linux下乱码问题一_MySQL

MySQL数据库乱码-Linux下乱码问题一_MySQL

WBOY
Release: 2016-06-01 13:30:47
Original
904 people have browsed it

bitsCN.com

MySQL数据库乱码-Linux下乱码问题一

 

乱码问题是很让人抓狂的问题,下面我将记录一下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/ | +--------------------------+----------------------------+ 
Copy after login

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 | +----------------------+-----------------+ 
Copy after login

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 ; 
Copy after login

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 | +----------------------+-----------------+ 
Copy after login

 

 

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  

 

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

 

mysql> source 导出数据库.sql

 

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

 

bitsCN.com
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template