更改mysql表字符集

时间:2012-12-31 11:49:33

标签: php mysql

我有一张表,数据是在前一段时间插入的。 php中包含的数据和其中的字符集是utf-8。

mysql_query("set names utf8");

现在,我需要在另一个项目中使用此表,所有数据都将在php mysql默认字符集上显示。

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

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

3 个答案:

答案 0 :(得分: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);
?>

答案 1 :(得分: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);
}

答案 2 :(得分: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进行转换要快得多。