Ê×ÏÈ,ÕâƬÎÄÕ´¿´âÊÇÎҵĸöÈ˾Ñé̸֮,ÊÊÓÃÓÚÎÒ³£¼ûµÄ»·¾³¼°ÏîÄ¿ÖÐ.
¸öÈ˽¨Òé,Êý¾Ý¿â×Ö·û¼¯¾¡Á¿Ê¹ÓÃutf8(utf-8),ÒÔʹÄãµÄÊý¾ÝÄܺÜ˳ÀûµÄʵÏÖǨÒÆ,ÒòΪutf8×Ö·û¼¯ÊÇÄ¿Ç°×îÊʺÏÓÚʵÏÖ¶àÖÖ²»Í¬×Ö·û¼¯Ö®¼äµÄת»»µÄ×Ö·û¼¯,¾¡¹ÜÄãÔÚÃüÁîÐй¤¾ßÉÏÎÞ·¨ÕýÈ·²é¿´Êý¾Ý¿âÖеÄÄÚÈÝ,ÎÒÒÀȻǿÁÒ½¨ÒéʹÓÃutf8×÷ΪĬÈÏ×Ö·û¼¯.
½ÓÏÂÀ´ÊÇÍêÕûµÄÒ»¸öÀý×Ó£º
1.´´½¨Êý¾Ý¿â±í
mysql>CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
#×¢ÒâºóÃæÕâ¾ä»° "COLLATE utf8_general_ci",´óÖÂÒâ˼ÊÇÔÚÅÅÐòʱ¸ù¾Ýutf8±äÂë¸ñʽÀ´ÅÅÐò
#ÄÇôÔÚÕâ¸öÊý¾Ý¿âÏ´´½¨µÄËùÓÐÊý¾Ý±íµÄĬÈÏ×Ö·û¼¯¶¼»áÊÇutf8ÁË
mysql>create table my_table (name varchar(20) not null default '')type=myisam default charset utf8;
#Õâ¾ä»°¾ÍÊÇ´´½¨Ò»¸ö±íÁË,Öƶ¨Ä¬ÈÏ×Ö·û¼¯Îªutf8
2.дÊý¾Ý
Àý×Ó1ÊÇͨ¹ýphpÖ±½Ó²åÈëÊý¾Ý:
a.php
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
//Çë×¢Òâ,Õâ²½ºÜ¹Ø¼ü,Èç¹ûûÓÐÕâ²½,ËùÓеÄÊý¾Ý¶Áд¶¼»á²»ÕýÈ·µÄ
//ËüµÄ×÷ÓÃÊÇÉèÖñ¾´ÎÊý¾Ý¿âÁª½Ó¹ý³ÌÖÐ,Êý¾Ý´«ÊäµÄĬÈÏ×Ö·û¼¯
mysql_query("set names utf8;");
//±ØÐ뽫gb2312(±¾µØ±àÂë)ת»»³Éutf-8,Ò²¿ÉÒÔʹÓÃiconv()º¯Êý
mysql_query(mb_convet_encoding("insert into my_table values('²âÊÔ');", "utf-8", "gb2312"));
?>
Àý×ÓÊÇͨ¹ýÒ³ÃæÌá½»²åÈëÊý¾Ý2:
b.php
//Êä³ö±¾Ò³±àÂëΪutf-8
header("content-type:text/html; charset=utf-8");
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
if(isset($_REQUEST['name'))
{
//ÓÉÓÚÉÏÃæÒѾָ¶¨±¾Ò³×Ö·û¼¯Îªutf-8ÁË,Òò´ËÎÞÐèת»»±àÂë
mysql_query(sprintf("insert into my_table values('%s');", $_REQUEST['name']));
}
$q = mysql_query("select * from my_table");
while($r = mysql_fetch_row($q))
{
print_r($r);
}
?>
×Ô´Ë,ʹÓÃutf8×Ö·û¼¯µÄÍêÕûµÄÀý×Ó½áÊøÁË.
Èç¹ûÄãÏëʹÓÃgb2312±àÂë,ÄÇô½¨ÒéÄãʹÓÃlatin1×÷ΪÊý¾Ý±íµÄĬÈÏ×Ö·û¼¯,ÕâÑù¾ÍÄÜÖ±½ÓÓÃÖÐÎÄÔÚÃüÁîÐй¤¾ßÖвåÈëÊý¾Ý,²¢ÇÒ¿ÉÒÔÖ±½ÓÏÔʾ³öÀ´.¶ø²»ÒªÊ¹ÓÃgb2312»òÕßgbkµÈ×Ö·û¼¯,Èç¹ûµ£ÐIJéѯÅÅÐòµÈÎÊÌâ,¿ÉÒÔʹÓÃbinaryÊôÐÔÔ¼Êø,ÀýÈç:
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;
¸½£º¾ÉÊý¾ÝÉý¼¶°ì·¨
ÒÔÔÀ´µÄ×Ö·û¼¯Îªlatin1ΪÀý£¬Éý¼¶³ÉΪutf8µÄ×Ö·û¼¯¡£ÔÀ´µÄ±í: old_table (default charset=latin1)£¬ÐÂ±í£ºnew_table(default charset=utf8)¡£
µÚÒ»²½£ºµ¼³ö¾ÉÊý¾Ý
mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql
µÚ¶þ²½£º×ª»»±àÂë
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
ÔÚÕâÀ¼Ù¶¨ÔÀ´µÄÊý¾ÝĬÈÏÊÇgb2312±àÂë¡£
µÚÈý²½£ºµ¼Èë
ÐÞ¸Äold.sql£¬Ôö¼ÓÒ»ÌõsqlÓï¾ä£º "SET NAMES utf8;"£¬±£´æ¡£
mysql -hlocalhost -uroot my_db < new.sql
´ó¹¦¸æ³É£¡