mysql php乱码怎么办

  介绍

今天就跟大家聊聊有关mysql php乱码怎么办,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

解决mysql php乱码问题:1,建立数据库表时指定数据库表的字符集;2,设置mysql的字符集;3,连接数据库后,设置数据库间传输字符时所用的默认字符编码;4,设置html页面使用的字符集。

php读mysql时,有以下几个地方涉及到了字符集。

1。建立数据库表时指定数据库表的字符集,例如

创建表的表
  (
  id int not null auto_increment,
  标题varchar(20)非空,
  主键(& # 39;id # 39;)
   

如果在创建表时没有指定表的字符集,则使用表所属的数据库的默认字符集。该字符集由character_set_database指定。
查看数据库表所使用的字符集的方法是:

显示创建表mytable;

(PS:建立数据库/表和进行数据库操作时尽量显式指出使用的字符集,而不是依赖于MySQL的默认设置,否则MySQL升级时可能带来很大困扰[1])

2。mysql的字符集
mysql中有三个重要的变量,character_set_client, character_set_results, character_set_connection。
通过设置character_set_client,告诉mysql, PHP存进数据库的是什么编码方式。
通过设置character_set_results,告诉mysql, PHP需要取什么样编码的数据。
通过设置character_set_connection,告诉mysql, PHP查询中的文本,使用什么编码。

3。连接数据库后,设置数据库间传输字符时所用的默认字符编码。
使用mysqli:: set_charset()或mysqli::查询(use utf8 # 39; & # 39;集名称),进行设置。
尽量使用mysqli:: set_charset (mysqli: set_charset)而不是“名字”(参考这篇文章)

$ db=新mysqli (& # 39; localhost # 39; & # 39;用户# 39;,& # 39;密码# 39;,& # 39;database_name # 39;); $ db→set_charset (& # 39; use utf8 # 39;);

注意是utf8,不是utf - 8
(这里有个问题就是,数据库和php都已经统一了编码,但是如果没有调用mysqli:: set_charset()函数时,读出数据时仍然会出现乱码。这是为什么?)
(另,名字utf8相当于下面三句
设置character_set_client=utf8;
设置character_set_results=utf8;
设置character_set_connection=utf8;
)

4。html页面使用的字符集。在元标签中设置

& lt;元http-equiv=癱ontent-type"内容=皌ext/html;charset=utf-8"在

5。php文本文件所使用的字符集。
在linux下可以用vim打开文件,输入
:
设置编码查看文件使用的字符集



针对“3”后面的问题,写了几个例子,测试链接数据库后,设置和不设置字符集时的结果。测试环境Ubuntu 12.04, 5.5 MySQL, php 5.5.7。
结果如下:
(1)数据库表字符集是utf8,不使用集名称utf8
能正常插入,读出中文,但是在MySQL中显示乱码

(2)数据库表字符集是utf8,使用集名称utf8
能正常插入,读出中文,MySQL中显示正确

(3)数据库表字符集不是utf8,使用集名称utf8
MySQL中显示,读出都是问号。

看完上述内容,你们对MySQL php乱码怎么办有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

mysql php乱码怎么办