MySQL数据库编码、html页面编码、PHP或html文件本身编码要全部一致。
1、MySQL数据库编码:建立数据库时指定编码(如gbk_chinese_ci),建立数据表、建立字段、插入数据时不要指定编码,会自动继承数据库的编码。
数据库连接时,也有编码,可以在连接完数据库后,执行
mysql_query('SET NAMES gbk');
完整连接数据库,并插入一条记录的示例:
<?php
// 1.连接数据库
$conn = mysql_connect('127.0.0.1:3306', 'root', '518666');
if (!$conn)
{
die("Could not connect:" . mysql_error());
}
// 2.选择数据库
$db = mysql_select_db('log_db', $conn);
// 3.设置编码,注意这里是utf8而不是utf-8,如果写后者,MySQL不会识别的,会出现乱码的。
mysql_query("SET NAMES utf8");
// 4.插入一条数据
$insert_sql = "insert into fb_call_log_tbl (`name`, `add_time`) values ('红人', 15698755445)";
$res = mysql_query($insert_sql);
print_r($res);
注意:1.这个示例的数据库,表,php文件都是utf8编码。
注意:2.这里是utf8而不是utf-8,如果写后者,MySQL不会识别的,还会出现乱码的。
2、html页面的编码,指的是这一行的设置:
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
3、PHP或html文件本身的编码:用editplus打开php文件或html文件,另存时,选择的编码,如果数据库和页面编码是gbk,则这儿的编码选择ansi;如果数据库和页面编码是utf-8,则这儿也选择utf-8。
4、另外要注意的是,Javascript或Flash中传递的数据是utf-8编码,如果数据库和页面编码是gbk,要进行转码,然后写入数据库。
将"你好"从GBK转换到UTF-8格式
iconv("gbk","utf-8","你好");
5、在PHP程序中,可以加上一行,来指定PHP源程序的编码:
header('Content-type: text/html; charset=gbk');