php5 读 MySQL5 utf8 中文乱码
这两天就弄MySql 了
开始 .net 乱码,现在 php5 也乱码,php5 下是这样解决的:
编码:为了使php与mysql更好的支持中文,将采用UTF-8编码,相关配置如下。
1、mysql的配置,在安装好mysql后,配置时将字符编码改为UTF-8,即选中第二项。对具体的数据库中的每一个表的编码改为UTF-8
2、Apache中不需要更改,因为已包含UTF-8编码
3、php中要对php.ini文件中line 637: extension=php_mbstring.dll 前的分号除掉,并且必需修改mb_string的相关编码配置,修改后的内容为:
line 1164: mbstring.language = utf-8
line 1169: mbstring.internal_encoding = utf-8
line 1172: mbstring.http_input = auto
line 1176: mbstring.http_output = utf-8
line 1183: mbstring.encoding_translation = On
line 1187: mbstring.detect_order = auto
line 1191: mbstring.substitute_character = utf-8;
line 1201: mbstring.func_overload = 1
(所有行号均对应的是php5.1.6 版本的php.ini-recommand)
4、在语句
$mysql_link = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
后加上
mysql_query("SET NAMES 'UTF8'");
注意:UTF8不能写成UTF-8,否则不起作用
下面的是在百度上搜到的:
以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据 后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。
只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:
$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES 'GBK'");
经过我的测试,我发现上面第二个方法就可以让 php5 读出的 MySQL5 的以utf8编码保存的中文字符。还有,以下这个是什么意思?:
$charset="latin1";
mysql_query("SET NAMES '".$GLOBALS['charset']."'");
就可以了
和
在写入数据库之前加上这段代码应该就能解决问题了,我前几天也碰到了这个问题,然后查遍论坛后,把所有文件保存成UTF8后,加上这段代码就完成,希望能解决你的问题
$sql = 'set names "utf8"';
if (!mysql_query($sql))
{
$this->error = 'cannot set character_sets';
$this->constructed = 0;
return false;
}
......
没有评论:
发表评论