??

???????MySQL database ? table ?? latin1??????big5?????? big5???????? escape char("\") ?????? UTF-8 ????? mysqldump ????????? big5 ? \?????????? \?? iconv ? piconv ? dump ???????? UTF-8 ???????????????????????????????????????????????????????????????????????????????????????


?????

??????? MySQL version 5
????? OLD_DB ?charset ? latin1?????? table ?? tbl? charset ?? latin1

my.cnf ??

[client] ???? default-character-set = utf8

[mysqld] ???? default-character-set = utf8 ?? skip-character-set-client-handshake

[mysql] ???? default-character-set = utf8

??????? php ???

<?
$outputfile= "OUTPUT.sql";
$DB_HOST="localhost";
$DB_USER="testuser";
$DB_PASS="testpass";
$DB_DBNAME="OLD_DB";
$DB_TABLE="tbl";

$fp=fopen($outputfile, "w+");
if(!$fp){
echo "Can not open file for writing.\n";
exit;
}

$dbcon=mysql_connect($DB_HOST, $DB_USER, $DB_PASS);
mysql_query("SET NAMES latin1", $dbcon);
mysql_select_db($DB_DBNAME, $dbcon);
$sqlstr="select * from $DB_TABLE";
$rs=mysql_query($sqlstr, $dbcon);
$NAMESTR="SET NAMES utf8;\r\n\r\n";
fwrite($fp, $NAMESTR, strlen($NAMESTR));
while($rsrow=mysql_fetch_row($rs)){
$i_sqlstr="INSERT INTO $DB_TABLE VALUES(";
foreach($rsrow as $rid=>$rval){
$rsrow[$rid]=iconv("BIG5", "UTF-8", $rval);
if(strval($rid)=="0")
$i_sqlstr.="'".addslashes($rsrow[$rid])."'";
else
$i_sqlstr.=", '".addslashes($rsrow[$rid])."'";
}
$i_sqlstr.=");\r\n\r\n";
fwrite($fp, $i_sqlstr, strlen($i_sqlstr));
}
mysql_free_result($rs);
mysql_close($dbcon);
fclose($fp);

exit;
?>

???? php ???????? OUTPUT.sql

?????????? database ? table????? databae ? table ??? utf8 ? default charset

????? mysql -u XXX -p < OUTPUT.sql

??? UTF-8 ????????? mysqldump ??? import ??????

http://blog.sikazozo.org/index.php?/archives/95-Mysql-latin1-table-UTF8-PHP.html