mysql中文乱码问题解决方法

一、安装好数据库,执行了创建数据库、表和向表中插入数据,如下:

//见表语句

CREATE TABLE gjp_ledger(
  lid INT PRIMARY KEY AUTO_INCREMENT, -- 账务ID
  parent VARCHAR(100), -- 所属父分类
  money DOUBLE, -- 金额
  sid INT, -- 分类ID
  account VARCHAR(100), -- 账户
  createtime DATE, -- 创建时
  ldesc VARCHAR(1000) -- 描述    
 );

//向表中插入数据

insert into  gjp_ledger(lid,parent,money,sid,account,createtime,ldesc)

 values (1,'支出',247,2,'交通银行','2016-03-02','家庭聚餐'),

 (2,'收入',12345,5,'现金','2016-03-15','开工资了'),

 (3,'支出',1998,1,'现金','2016-04-02','买衣服'),

 (4,'支出',325,2,'现金','2016-06-18','朋友聚餐'),

出现乱码的情况如下:

二、排查错误原因及修改

为了弄清楚到底是数据库的链接工具乱码还是数据库本身乱码,我们最好采用在dos窗口下执行sql命令,这样如果乱码的化代表使数据库本身乱码。

排查错误原因:

1.在安装mysql数据库的时候是否将字符编码集设置为“utf8”或者“GBK”编码,默认为是“Latin”文,是不能显示中文的。

2.查看数据库的编码,如下:


从上面可以看出,mysql数据库的客户端、连接、数据库、结果集和服务器等都是latinl,这时我们关闭mysql服务器,找到mysql安装路径下的my.ini文件,将下面两个编码集改为utf8,如下:

default-character-set=latin1  改为default-character-set=utf8

character-set-server=latin1  改为character-set-server=utf8

保存后,重启服务器,重新打开dos窗口,执行sql命令:show variables like 'character%';  如下:


如果上图中的 character_set_database  的 value 仍为 latinl ,则需要执行命令  SET character_set_client = utf8;  ,再重启mysql服务器和dos窗口查看,即与上图中的结果一致。

三、出现新问题并解决

上述操作之后,我们在查询数据库中的数据,发现表中仍存在乱码现象,这时候我们需要重新创建表和插入数据,但是在插入数据是又出现了新的错误如下:

错误:1366 - Incorrect string value: '\xE4\xB8\xAD\xE6\x96\x87' for column 'cName' at row 1

这是因为mysql 的默认编码位latinl,所以在创建表时,带有中文的字段要在数据类型后添加“ CHARSET utf8

DROP TABLE gjp_ledger;
CREATE TABLE gjp_ledger(
  lid INT PRIMARY KEY AUTO_INCREMENT, -- 账务ID
  parent VARCHAR(100)  CHARSET utf8  , -- 所属父分类
  money DOUBLE , -- 金额
  sid INT, -- 分类ID
  account VARCHAR(100) CHARSET utf8  , -- 账户
  createtime DATE, -- 创建时间
  ldesc VARCHAR(1000) CHARSET utf8   -- 描述    
 );

再插入数据即可成功,


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值