<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[MySQL字符集及MySQL编码转换]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Thu, 16 Nov 2006 03:40:09 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	今天找到这篇文章，里面提到从latin1到UTF8的MySQL编码转换。收藏一下，最近要将所有的数据库都转一次，一直错误的使用latin1，再不转以后麻烦大了。<br/><br/>出处：未知<br/><br/>个人建议,数据库字符集尽量使用utf8(utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上无法正确查看数据库中的内容,我依然强烈建议使用utf8作为默认字符集.<br/>接下来是完整的一个例子：<br/>1.创建数据库表<br/><br/>mysql>CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;<br/>#注意后面这句话 “COLLATE utf8_general_ci“,大致意思是在排序时根据utf8编码格式来排序<br/>#那么在这个数据库下创建的所有数据表的默认字符集都会是utf8了<br/><br/>mysql>create table my_table (name varchar(20) not null default '')type=myisam default charset utf8;<br/>#这句话就是创建一个表了,制定默认字符集为utf8<br/><br/>2.写数据<br/>通过php直接插入数据:<br/><br/><div class="code"><br/>&lt;?php <br/>mysql_connect(&#039;localhost&#039;,&#039;user&#039;,&#039;password&#039;); <br/>mysql_select_db(&#039;my_db&#039;); <br/>&nbsp;&nbsp;<br/>//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的 <br/>//它的作用是设置本次数据库联接过程中,数据传输的默认字符集 <br/>mysql_query(&quot;set names utf8;&quot;); <br/>&nbsp;&nbsp;<br/>//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数 <br/>mysql_query(mb_convet_encoding(&quot;insert into my_table values(&#039;测试&#039;);&quot;, &quot;utf-8&quot;, &quot;gb2312&quot;)); <br/>?&gt;<br/><br/></div><br/><br/>通过页面提交插入数据:<br/><br/><div class="code"><br/>&lt;?php <br/>//输出本页编码为utf-8 <br/>header(&quot;content-type:text/html; charset=utf-8&quot;); <br/><br/>mysql_connect(&#039;localhost&#039;,&#039;user&#039;,&#039;password&#039;); <br/>mysql_select_db(&#039;my_db&#039;); <br/><br/>if(isset($_REQUEST&#91;&#039;name&#039;)) <br/>&#123; <br/>//由于上面已经指定本页字符集为utf-8了,因此无需转换编码 <br/>mysql_query(sprintf(&quot;insert into my_table values(&#039;%s&#039;);&quot;, $_REQUEST&#91;&#039;name&#039;&#93;)); <br/>&#125; <br/><br/>$q = mysql_query(&quot;select * from my_table&quot;); <br/>while($r = mysql_fetch_row($q)) <br/>&#123; <br/>print_r($r); <br/>&#125; <br/>?&gt; <br/><br/>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt; <br/>&lt;form action=&quot;&quot; method=&quot;post&quot;&gt; <br/>&lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;&quot;&gt; <br/>&lt;input type=&quot;submit&quot; value=&#039;submit&#039;&gt; <br/>&lt;/form&gt;<br/><br/></div><br/><br/>自此,使用utf8字符集的完整的例子结束了.<br/>如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束,例如:<br/><br/>create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;<br/>附：旧数据升级办法<br/>以原来的字符集为latin1为例，升级成为utf8的字符集。原来的表: old_table (default charset=latin1)，新表：new_table(default charset=utf8)。<br/>第一步：导出旧数据<br/><br/>mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql<br/>第二步：转换编码<br/><br/>iconv -t utf-8 -f gb2312 -c old.sql > new.sql<br/>在这里，假定原来的数据默认是gb2312编码。<br/>第三步：导入<br/>修改old.sql，增加一条sql语句： “SET NAMES utf8;“，保存。<br/><br/>mysql -hlocalhost -uroot my_db < new.sql<br/>大功告成！<br/><br/>引用：<a href="http://www.21andy.com/blog/20060514/297.html" target="_blank">http://www.21andy.com/blog/20060514/297.html</a><br/><br/><br/>Tags - <a href="http://www.dzhope.com/tags/%25E5%25AD%2597%25E7%25AC%25A6%25E9%259B%2586/" rel="tag">字符集</a> , <a href="http://www.dzhope.com/tags/utf8/" rel="tag">utf8</a> , <a href="http://www.dzhope.com/tags/utf-8/" rel="tag">utf-8</a> , <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] MySQL字符集及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.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>