本文目录一览:
- 1、php向mysql表中写入中文,读出来是乱码,编码set names utf8
- 2、PHP MYSQL乱码问题,使用SET NAMES utf8校正
- 3、php mysql_query("set names utf8");是什么意思
- 4、如何用php设置utf-8编码?
- 5、PHP插入mysql数据库乱码
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乱码问题,使用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_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设置utf-8编码?
在你的源文件找到meta http-equiv="content-type" content="text/html;charset=utf-8"charset= 后面接的就是编码,你全部改了就可以了。如果你改了之后变成乱码的话,那你就只能先建一个utf-8编码的网页,把相应的内容重新输入进去。
要输出UTF8格式时,加上以下语句:
header(”Content-Type: text/html; charset=UTF-8″)
php用UTF-8总结:
php文件本身必须是UTF-8编码。不像Java会生成class文件,避免这个问题
php要输出头:header(”Content-Type: text/html; charset=UTF-8″)
meta标签无所谓,有header所有浏览器就会按header来解析
所有外围都得用UTF8,包括数据库、×.js、×.css(CSS影响倒不大)
php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码(基本上的linux都装了,没装的话download、tar、make、make install,很简单的)
my.ini:
[MySQL(和PHP搭配之最佳组合)]
default-character-set=utf8
[MySQL(和PHP搭配之最佳组合)d]
default-character-set=utf8
default-storage-engine=MyISAM
在[MySQL(和PHP搭配之最佳组合)d]下加入:
default-collation=utf8_bin
init_connect='SET NAMES utf8'
在需要做数据库操作的php程序前面加上
mb_internal_encoding('utf-8');
create table最后边加上ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
phpMyAdmin/config.inc.php
$cfg['DefaultCharset'] = 'utf-8';
$cfg['RecodingEngine'] = 'iconv';
phpAdmin导出数据时
把"二进制区域使用十六进制显示"的勾去掉
特别郁闷的:文件系统函数不支持UTF-8!
PHP插入mysql数据库乱码
乱码主要以下几个原因:
1。数据表中,表本身的编码 和 字段编码,均为UTF8。
2。在写入数据等数据库操作前,发送语句 'set names utf8'
3。PHP文件都是UTF8编码,无签名(无BOM)
4。页面上使用header或meta保证输出的页面是UTF8编码。meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
鲜少老师