本文目录一览:
- 1、php mysql_query("set names utf8");是什么意思
- 2、PHP MYSQL乱码问题,使用SET NAMES utf8校正
- 3、php向mysql表中写入中文,读出来是乱码,编码set names utf8
- 4、php和mysql数据库编码都是utf8,为什么还要set names utf8???
php mysql_query("set names utf8");是什么意思
mysql中文数据出现乱码
数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:
mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");
来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:
mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。
$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES 'GBK'");
PHP MYSQL乱码问题,使用SET NAMES utf8校正
先记下,免得以后想不起来又到处去找!
PHP操作数据库的时候,数据库中数据使用UTF8编码,在读出来的时候,显示的全是???????问号乱码,找了一些资料原来是在读取之前进行一次编码设置:
复制代码
代码如下:
create
table
tablename
(
id
int
not
null
auto_increment,
title
varchar(20)
not
null,
contnet
varchar(300)
defalut
null,
primary
key
('id')
)begin=MyISAM
DEFAULT
CHARSET
=UTF8;
在插入数据之前执行:
复制代码
代码如下:
mysql_query("SET
NAMES
utf8");
然后
mysql_query("insert
into
tablename
.....")
读出数据之前执行:
复制代码
代码如下:
mysql_query("SET
NAMES
utf8");
然后
mysql_query("select
*
from
tablename")
注意:此处读出的编码是把原来编码的内容重新经过编码后输出的,比如输出内容所在页面是GBK编码,那么在读出的时候在页面显示也为乱码,所以在查询之前执行
mysql_query("SET
NAMES
gbk"),在页面就可以正常显示GBK编码的文字内容
。
php向mysql表中写入中文,读出来是乱码,编码set names utf8
set
names
只是告诉数据库,取出和存入的字符编码是什么,与数据库内部使用什么编码储存没有关系。
既然你设定了utf8
那么请检查
php文件编码是否是utf8,不是的话使用
header('Content-Type:text/html;
charset=utf-8');
再检查html页面编码是否utf8,不是的话使用
meta
http-equiv="content-type"
content="text/html;charset=utf-8"
/
php和mysql数据库编码都是utf8,为什么还要set names utf8???
PHP是一种服务器端HTML-嵌入式脚本描述语言。 其最强大和最重要的特征是其数据库集成层,使用它完成一个含有数据库功能的网页是不可置信的简单。在HTML文件中, PHP脚本程序(语法类似于Perl或者c语言)可以使用特别的PHP标签进行引用, 这样网页制作者也不必完全依赖HTML生成网页了。由于PHP是在服务器端执行的, 客户端是看不到PHP代码的。 PHP可以完成任何CGI脚本可以完成的任务,但它的功能的发挥取决于它和各种数据库的兼容性。 PHP除了可以使用HTTP进行通信,也可以使用IMAP, SNMP, NNTP, POP3协议