正在加载
花妹妹网上订花送花

Posts Tagged ‘mysql’

解决关于php读取mysql里中文出现乱码的问题

Wednesday, August 27th, 2008

今天用php+mysql做一个Project遇到了中文乱码问题。下图(几个???应该是中文显示区域):
php读取mysql中文字符集错误

这种问题在开发时候是常见的,当然是mysql字符与html中header头文件上指定的字符集不统一引起的,以前也遇到过这个问题,当时采用的方法是在打开MySQL服务器连接的后面链接数据库的前面加入转换mysql字符集的方法:

mysql_query("set names 'gbk'");

把从mysql中读出来的数据转换为gbk字符集,head中的设置自然是

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

今天的问题是我的页面使用的utf-8的字符集,而在我使用转换语句mysql_query("set names 'utf-8'");的时候无效,又不想因为字符集的问题而改变所有页面的charset。

解决方法如下,修set names语句为:

mysql_query("SET character_set_connection=uft-8 , character_set_results=utf-8, character_set_client=binary, sql_mode='' ");

即可在字符集为utf-8的网页中正确的读取/显示中文字符了。

php读取mysql中文字符集错误修正

为了更清楚的说明我的方法,贴我的connection中一段代码出来,注意转换字符集语句的放置位置。

require 'includes/config.php';

//打开MySQL服务器连接
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$connection){
die("Database connection failed:" . mysql_error());
}

//修改字符集
mysql_query("SET character_set_connection=uft-8 , character_set_results=utf-8, character_set_client=binary, sql_mode=''");

//链接数据库
$db_select = mysql_select_db(DB_NAME,$connection);
if(!$db_select){
die("Database selection failed:" . mysql_error());
}