??php??latin1 big5 ???mysql???? utf8
??
???????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