php与mysql中文乱码问题

    xiaoxiao2021-03-26  20

    使用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
    转载请注明原文地址: https://ju.6miu.com/read-660926.html

    最新回复(0)