总结--解决 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

时间: 2024-07-29 00:49:29

总结--解决 mysql 中文乱码的相关文章

彻底解决mysql中文乱码

mysql是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1.1.中文乱码 create table user(name varchar(11)); # 创建user表 insert into table user("carl"); # 添加数据 select * from user; insert into user value("哈哈"); 无法

解决mysql中文乱码(总)

转自:http://hi.baidu.com/cnvienna/blog/item/2e99efdfd94fc61862279801.html MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如php)的连线语系设定问题 强烈建议使用utf8!!!! utf8可以兼容世界上所有字符!!!! 一.避免创建数据库及表出现中文乱码和查看编码方法 1.创建

解决MySQL中文乱码

环境:win10,  Server version: 5.7.25 MySQL Community Server (GPL) 1. 中文乱码 无法插入中文字符,显示该条错误 2. 查看数据库编码 这里需要把这两项修改为 utf8 格式 3. 设置数据全局范围 修改 mysql 配置文件 /etc/my.cnf.(这里添加没有的数据就行了,不必改为一致,不然可能启动不了数据库) [mysqld] character-set-server=utf8 [client] default-characte

解决MySQL中文乱码的问题

遇到中文乱码问题,首先用status命令检查数据库的配置,如下: 上图会显示数据库配置的各项信息. 还可以用 show create database XXX,来显示创建数据库的时候的编码设置. 一般来说,要在创建数据库的时候指定数据库的编码方式,有中文的时候,要指定为utf8. 创建方式如上图.此时数据库的默认编码方式即为utf8.但是此时可能会出现如下错误: Incorrect string value: '\xB1\xB1\xBE\xA9' for column 'b' at: 此时就需要

MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集

MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据库字符集.character-set-table:数据库表字符集.优先级依次增加.所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集.character-set-client:客户端的字符

解决 mysql 中文乱码

mysql版本:5.6.38 虽然创建实例时选择的是utf-8的utf8_general_ci,但是用其他程序保存中文时依旧出现乱码的情况. 记录一种可行的解决方案,即修改数据库的字符集. 由于该环境的mysql我是使用yum的方式进行安装,所以mysql的配置文件路径:/etc/my.cnf vim /etc/my.cnf 编辑内容,在[mysqld]下添加下面的内容,wq保存. character_set_server = utf8

linux修改配置文件解决mysql中文乱码和指定数据库存储引擎

如题,mysql数据库的中文显示乱码: 先看下原来数据库里的字符编码: mysql> show variables like '%character_set%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | l

解决MySQL中文乱码问题

决解乱码费了我好些时间啊! 乱码原因有 1.mysql未设置为支持汉字 2.没有发送头信息 3.使用的编译器不符合相应的编码 决解的方法是 在mysql里 我用的是Wanmp Server 1.在mysql目录下找到my.ini,在[client]新增default-character-set=utf8 [client] #password = your_password port = 3306 socket = /tmp/mysql.sock default-character-set=utf

命令行解决mysql中文乱码

修改my.ini文件中的 [mysql] default-character-set=gbk [mysqld] # The default character set that will be used when a new schema or table is# created and no character set is definedcharacter-set-server=utf8 修改后,重启mysql.结果: mysql> show variables like 'characte