Php 修复MySQL中混乱的字符编码

Php 修复MySQL中混乱的字符编码,php,mysql,sql,utf-8,Php,Mysql,Sql,Utf 8,有服务器1和数据库1,其中存储和查询的数据未设置MySQL连接编码。当然,在整合之前,一切都是有效的 还有另一个服务器和数据库(2)使用UTF8编码的连接,因此所有值都正确存储 db1的一些表必须复制到db2 这就是我被任务困住的地方。我尝试了多个连接的SELECT-INTO,然后出现了权限错误(如果需要,我无法在一次查询中切换到其他用户) 我也试过类似的方法 选择*INTO OUTFILE'/back.txt' 由'\t'行终止的字段由'\n'终止 从文章“返回拒绝访问,即使我检查了所有权限,

有服务器1和数据库1,其中存储和查询的数据未设置MySQL连接编码。当然,在整合之前,一切都是有效的

还有另一个服务器和数据库(2)使用UTF8编码的连接,因此所有值都正确存储

db1的一些表必须复制到db2

这就是我被任务困住的地方。我尝试了多个连接的
SELECT-INTO
,然后出现了权限错误(如果需要,我无法在一次查询中切换到其他用户)

我也试过类似的方法
选择*INTO OUTFILE'/back.txt'
由'\t'行终止的字段由'\n'终止
从文章“
返回拒绝访问,即使我检查了所有权限,我猜

所以我决定用PHP手动获取数据,将其存储在数组中,然后正确地插入所有设置了连接编码的数据。这应该可以工作。尽管这比我一直尝试的任何其他方法都要复杂

以下是没有敏感信息的代码片段:

连接到server1,选择DB1

我突然想到,如果我可以只对某个连接应用一个查询怎么办?这会更容易。我不知道该怎么做,所以我在下面写下了这个乱七八糟的东西:

 foreach($adat as $k=>$v) {

    if(is_array($v)) foreach($v as $k2=>$v2) { echo $k." ".$v2;
    $puffer.=",'".$v2."'";
    } 
    $puffer=substr($puffer,1);
    echo $puffer;
    if(is_array($v)) mysql_query("INSERT INTO tarticles VALUES($puffer)");
    echo "<br/>";
}
foreach($k=>v){
if(is_array($v))foreach($v as$k2=>$v2){echo$k.“”.$v2;
$puffer.=”,“$v2.”;
} 
$puffer=substr($puffer,1);
echo$puffer;
if(is_数组($v))mysql_查询(“插入到tarticles值($puffer)”);
回声“
”; }
aaaand。它不起作用

(我正在检查is\u数组,因为行ID并不总是相互跟随)


请帮助!

不知道确切的解决方案,但你真的不应该再使用mysql_*函数了。它们已被弃用。我还没有时间学习mysqli。
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
 foreach($adat as $k=>$v) {

    if(is_array($v)) foreach($v as $k2=>$v2) { echo $k." ".$v2;
    $puffer.=",'".$v2."'";
    } 
    $puffer=substr($puffer,1);
    echo $puffer;
    if(is_array($v)) mysql_query("INSERT INTO tarticles VALUES($puffer)");
    echo "<br/>";
}