<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[转]PHP连接MySQL的字符集问题新发现]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 06 Nov 2008 06:28:30 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	之前我在一篇文章里面讲到把故人居网站升级为UTF8字符集，看过的也知道一些有关PHP和MySQL字符集的问题，通常情况下MySQL默认使用的字符集是latin1，如果我们的系统要使用utf8或者别的字符集，就需要对MySQL进行配置，并且在PHP程序中做一点处理，大致的方法如下：<br/><br/>1.修改my.ini （或者my.cnf）文件，在文件的[mysqld]中加入下面一行<br/>character_set_server = utf8<br/><br/>由于MySQL的字符集和连接校对有分级，分别是操作系统级、数据库服务器级、数据库客户端级，这几个级别是从上往下包含的，我上面的那一行 character_set_server 参数实际上就是设置了全局的字符集，这样不管是MySQL数据存储、数据连接、结果返回都将是utf8，当然，如果您愿意，您也可以进行分别的设置，比如做如下设置<br/>default-character-set = utf8<br/>default-collation = utf8_general_ci<br/>这样的设置可以设置一个默认字符集，在您的应用中如果没有特殊指定字符集，那将默认使用utf8作为字符集，并且使用utf8_general_ci作为连接校对的默认字符集；<br/><br/>简单的处理方法就是如我前面的那样，加入一行即可。<br/><br/>2.PHP程序中连接MySQL的时候，或者在执行mysql_query的时候，执行以下一行SQL语句<br/>SET NAMES utf8<br/>就是说在执行mysql_query之前，或者在完成mysql_connect()之后，执行 mysql_query(”SET NAMES utf8）<br/><br/>　　有了前面的两个处理，您就可以正常的进行utf8字符集的数据库操作，不管在页面显示还是数据库中，字符都不会出现乱码。<br/><br/>　　前面说到的方法是以前用到的常用方法，最近在MySQL的官方发现了这样一个参数 init_connect ，它的意思呢就是在MySQL启动的时候，自动执行init_connect 参数里面的SQL语句，支持用分号间隔的多个语句，于是我们可以把 SET NAMES utf8语句加到my.ini文件里面，在PHP程序里面就不用单独处理了，加入参数的方法很简单，就是在my.ini文件的 [mysqld] 段加入下面一行<br/>init_connect = ‘SET NAMES utf8′<br/><br/>　　不过这个方法有一个需要注意的地方，那就是该参数对于连接数据库的用户是超级用户组的用户将被忽略，那么在PHP程序中用来连接MySQL数据库的用户不能是SUPER组的用户，比如root用户就肯定不行，这样是为了避免该参数导致数据库致命错误，而无法使用任何一个用户连接上修改该项配置，之前我搞了两天都没有发现这样的问题，害我郁闷了很久。。。<br/><br/>有关MySQL的配置文件中用到的参数可以参考官方的文档 ： http://dev.mysql.com/doc/refman/4.1/en/server-system-variables.html<br/><br/>　　呵呵，让人又爱又恨的MySQL！<br/>注意：<br/>&nbsp;&nbsp;&nbsp;&nbsp;出现你这样的原因是虽然你的WP设置了使用utf8，但是PHP在进行数据库连接的时候并没有使用utf8连接校验，这样插入到里面的数据存储方式虽然是 utf8，但是数据本身并不是utf8的，PHP读出来的时候使用的方法和插入一样，所以WP里面看到的并不会是乱码，相反在更加聪明的 phpmyadmin里面却看到了乱码，因为它使用了正确的utf8连接校验。
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [转]PHP连接MySQL的字符集问题新发现]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>