赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 网站建设

首页 > 专业技术 > 网站建设 > 网页显示MySQL数据库汉字的乱码问题
网页显示MySQL数据库中汉字的乱码问题

在用PHP读取MySQL数据库的汉字内容时,经常会出现乱码问题,如显示为?或者没有意义的汉字内容。这主要是MySQL数据库的编码设置问题,也要注意网页使用的编码问题。因为utf-8码可以兼容世界上一切文字字符,一般在数据库中最好使用utf-8。

为了检查你所配置的MySQL数据库的编码配置情况,要使用下面的命令:

mysql> show variables like '%char%';

我使用的是WAMP软件包,要打开MySQL控制台,在窗口中输入上面的指令。

mysql

然后会显示下面的信息:

mysql

可见,WAMP默认配置的MySQL数据库使用的编码为latin1,不适合显示汉字,需要更改。这个编码配置需要在my.ini中更改。

mysql

其中需要更改两处,分别在[client]和[mysqld]部分,示例:

[client]
default-character-set=utf8

[mysqld]
character_set_server=utf8

存储后重启WAMP,再次使用“show variables like '%char%';”指令检查数据库编码:

可以看到,编码已经改变为utf8。为了在网页中显示正确,需要在网页前面的meta语句中进行相关设置:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

这样,就可以使数据库中的汉字在网页中正常显示了。

但是,这是在本机的WAMP上面直接改字符集的设置,如果使用的是虚拟主机,就不能很方便地修改字符集设置了,很多设置往往是不能修改的。为了在虚拟主机上也能正确显示数据库数据,就不能使用上述的方法,其实也很简单,只需要插入一条指令:

mysqli_query($semiconn,"SET NAMES 'UTF8'");

这样,数据库中的数据就能正常显示出来了。当然,前提是数据库内容结构使用的GBK或GB2312字库。

我的虚拟主机上的相关设置为:

character set client latin1
character set connection latin1
character set database latin1
character set filesystem binary
character set results latin1
character set server latin1
character set system utf8

当然,在往数据库中插入数据时也需要转码:

iconv('gbk','utf-8',XXXXX);


Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659