<?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字符集设置及其转换]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Thu, 15 May 2008 00:13:13 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	<span style="font-size: 14px;">个人建议,数据库字符集尽量使用utf8(utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上无法正确查看数据库中的内容,我依然强烈建议使用utf8作为默认字符集.<br/>接下来是完整的一个例子：<br/>1.创建数据库表<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/>例子1是通过php直接插入数据:<br/>a.php<br/><?php<br/>mysql_connect('localhost','user','password');<br/>mysql_select_db('my_db');<br/><br/>//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的<br/>//它的作用是设置本次数据库联接过程中,数据传输的默认字符集<br/>mysql_query("set names utf8;");<br/><br/>//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数<br/>mysql_query(mb_convet_encoding("insert into my_table values('测试');", "utf-8", "gb2312"));<br/>?><br/><br/>例子是通过页面提交插入数据2:<br/>b.php<br/><?php<br/>//输出本页编码为utf-8<br/>header("content-type:text/html; charset=utf-8");<br/><br/>mysql_connect('localhost','user','password');<br/>mysql_select_db('my_db');<br/><br/>if(isset($_REQUEST['name'))<br/>&#123;<br/>&nbsp;&nbsp; //由于上面已经指定本页字符集为utf-8了,因此无需转换编码<br/>&nbsp;&nbsp; mysql_query(sprintf("insert into my_table values('%s');", $_REQUEST['name']));<br/>&#125;<br/><br/>$q = mysql_query("select * from my_table");<br/>while($r = mysql_fetch_row($q))<br/>&#123;<br/>&nbsp;&nbsp; print_r($r);<br/>&#125;<br/>?><br/><br/><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><br/><form action="" method="post"><br/><input type="text" name="name" value=""><br/><input type="submit" value='submit'><br/></form><br/><br/>自此,使用utf8字符集的完整的例子结束了.<br/>如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束,例如:<br/>create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;<br/><br/><br/>附：旧数据升级办法<br/>以原来的字符集为latin1为例，升级成为utf8的字符集。原来的表: old_table (default charset=latin1)，新表：new_table(default charset=utf8)。<br/>第一步：导出旧数据<br/>mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql<br/>第二步：转换编码<br/>iconv -t utf-8 -f gb2312 -c old.sql > new.sql<br/>在这里，假定原来的数据默认是gb2312编码。<br/>第三步：导入<br/>修改old.sql，增加一条sql语句： "SET NAMES utf8;"，保存。<br/>mysql -hlocalhost -uroot my_db < new.sql<br/>大功告成！！</span><br/>Tags - <a href="http://www.dzhope.com/tags/utf-8/" rel="tag">utf-8</a> , <a href="http://www.dzhope.com/tags/%25E6%2595%25B0%25E6%258D%25AE%25E5%25BA%2593/" rel="tag">数据库</a> , <a href="http://www.dzhope.com/tags/mysql%25E5%25AD%2597%25E7%25AC%25A6%25E7%25BC%2596%25E7%25A0%2581/" rel="tag">mysql字符编码</a> , <a href="http://www.dzhope.com/tags/mysql%25E7%25BC%2596%25E7%25A0%2581/" rel="tag">mysql编码</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] 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>