debian mysql中文乱码_MySQL中文乱码的解决方法汇总

当我们用PHP往MySQL数据库里插入中文时,一旦出现????乱码,很多同学就抓狂了,身为中国人,你却把中文汉字变成乱码,那我可不答应,于是乎我们就开始奔波于个大论坛发帖求助....

对于MySQL中文乱码其实常见的也就那么几个问题,处理好了就OK了,这里总结了几点解决方法,都是我们经常遇见的,大家可以对照着解决问题

1、Db编码格式不正确

用status可以查看当前数据库的情况

mysql> status

--------------

mysql  Ver 14.14 Distrib 5.5.32, for debian-linux-gnu (x86_64) using readline 6.2

Connection id:        54

Current database:    mydbname

Current user:        root@localhost

SSL:            Not in use

Current pager:        stdout

Using outfile:        ''

Using delimiter:    ;

Server version:        5.5.32-0ubuntu0.12.04.1 (Ubuntu)

Protocol version:    10

Connection:        Localhost via UNIX socket

Server characterset:    latin1

Db     characterset:    latin1

Client characterset:    utf8

Conn.  characterset:    utf8

UNIX socket:        /var/run/mysqld/mysqld.sock

Uptime:            5 hours 18 min 41 sec

Threads: 1  Questions: 182  Slow queries: 0  Opens: 225  Flush tables: 1  Open tables: 55  Queries per second avg: 0.009

--------------

我们可以看到红色字体标出来的两行,发现问题了吧,Db和Server都是latin1,我们需要将他设置成utf8就能解决问题了。

这就需要我们在创建数据库时,将编码设置好,下面是设置编码的示例:CREATE DATABASE `mydbname` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

别忘了,数据库编码设置好后还要设置表的编码

CREATE TABLE `database_user` (

`ID` varchar(40) NOT NULL default '',

`UserID` varchar(40) NOT NULL default '',

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、网页编码问题

这个问题UncleToo其实也没完全搞明白,同样是GB2312的程序,有时插入到MySQL是正常汉字,而有时候却成了乱码,我的解决办法就是在需要与MySQL交互时就在程序里给出 set names utf8 命令,如果你有其他更好的办法也可以一起交流一下。

3、改变数据库默认编码

使用 SHOW VARIABLES LIKE ''character_set_%''查看数据库字符集

mysql> SHOW VARIABLES LIKE ''character_set_%'';

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | utf8 |

| character_set_results | latin1 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

这时,我们需要将latin1编码改成utf8。

找到my.ini文件(#开头的是注释部分)在MySQL组下修改

default-character-set=utf8

或者直接输入命令修改:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

以上三种乱码情况是最常见的,也是新手经常遇到的,这里一起分享给大家,希望能给大家带来帮助。

其他中文乱码问题UncleToo暂时还没遇到过,如果您碰到了且有很好的解决办法,可以告诉我们,并分享给大家

更多MySQL技术,请登录http://www.uncletoo.com

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值