php和mysql中文乱码问题_php与mysql中文乱码问题

php与mysql中文乱码问题,使用mysql数据库时,有时会出现中文乱码问题,一般是以下几种情况造成的,遇到时可以依次进行排除。

mysql数据库编码问题 php文件编码问题,使用php程序向mysql数据库插入数据时,若php文件编码与mysql编码不一致,也会造成中文数据插入数据库后乱码。 客户端显示问题,mysql和php编码都没问题时,可能是因为xshell、secretcrt这类客户端显示编码问题,造成显示中文时始终乱码。

解决办法

修改mysql数据库编码设置

在mysql中输入以下命令查看编码设置

show variables like '%char%'

Variable_name | Value |

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

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | latin1 |

| character_set_system | utf8 |

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

从上图中可以看到 MySQL 有六处使用了字符集,分别为:client 、connection、database、results、server 、system。其中与服务器端相关:database、server、system(永远无法修改,就是utf-8);与客户端相关:connection、client、results 。

采用set可以修改以上变量编码,例:

set character_set_client=utf8

修改php文件编码

在连接数据库前通过mysql_query(“set names ‘utf8’”,$conn);进行设置

$conn=mysql_connect("localhost", "用户名", "密码");

mysql_query("set names 'utf8'",$conn);

mysql_select_db("数据名",$conn);

$exec="insert into net_city (cityname,inarea,outarea,tel) values ('".$link_cityname."','".$link_inarea."','".$link_outarea."','".$link_tel."')";

$result=mysql_query($exec,$conn);

if($result){

echo "1";

}else{

echo "0";

}

修改已经有的table的编码

alter table table_name convert to character set utf8;

修改mysql的配置文件,让mysql默认编码为utf8

mysql使用的配置文件为

/etc/mysql/my.cnf

在配置文件中添加

[mysqld]

character-set-server=utf8

这是再创建表就是默认为utf8编码了

显示问题

上面改了服务器的字符编码,但是如果不改client的,在终端上显示的还是???

还需要在配置文件中加上

[client]

default-character-set=utf8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值