2012-12-31 78 views
0

我有一张表格,前一段时间插入了数据。由php和字符集包含的数据是utf-8。更改mysql表字符集

mysql_query("set names utf8"); 

现在,我需要在另一个项目中的所有数据将显示在MySQL的默认字符集。

问题:我的数据是波斯语,当我设置charachter设置utf-8时,每件事都可以,但没有字符集数据转换为“?????”我该怎么办?!

我想从旧表中导入所有数据到新的字符集上的新表!

+0

选中此项:http://www.devcha.com/2008/03/convert-existing-mysql-database-from.html和http://dev.mysql.com/doc/refman/5.0/en/ /charset-conversion.html –

+2

使用UTF-8。如果数据是unicode,请使用unicode。 “其他项目”没有理由将字符集决定留给MySQL。 – DaveRandom

回答

0
/// 
$SERVER = "http://localhost:8084"; 
$db = mysql_connect('localhost','root') or die("Not Connected"); 
$sldb = mysql_select_db('vifarbydata',$db); 

mysql_query("set names utf8"); 
$sql = "SELECT * FROM `region` "; 
$res = mysql_query($sql); 
while($h=(mysql_fetch_array($res))) 
{ 
    $row[] = $h; 
} 
mysql_close($db); 
/// set another character set 
$SERVER = "http://localhost:8084"; 
$db = mysql_connect('localhost','root') or die("Not Connected"); 
$sldb = mysql_select_db('vifarbydata',$db); 
foreach ($row as $item) 
{ 
    echo $sql = "insert into `region2` (id,name,myId) values (".$item['id'].",'".$item['name']."','".$item['myId']."') "; 
    mysql_query($sql); 
} 
0

试试这个可以帮助你

<?php 

    header('Content-Type: text/html; charset=utf-8'); 
?> 
and then in the connection 

<?php 
$dbLink = mysql_connect($argHost, $argUsername, $argPassword); 
    mysql_query("SET character_set_results=utf8", $dbLink); 
    mb_language('uni'); 
    mb_internal_encoding('UTF-8'); 
    mysql_select_db($argDB, $dbLink); 
    mysql_query("set names 'utf8'",$dbLink); 
?> 
+0

我不想设置字符集UTF-8,我想将我的旧表转换为新的,我没有改变我的字符集,只是为了这张桌子!是否有可能? – afsane

0

@afsane,使用mysqldump,你可以转储从OLD_TABLE数据,然后将其导入到具有新的字符编码NEW_TABLE。

mysqldump -u user -p --no-create-info schema old_table > old_table.dump 
mysql -u user -p schema new_table < old_table.dump 

这比通过PHP进行转换要快得多。