我正在尝试将数据从一个数据库复制到另一个数据库。
在db1中,有一列具有以下值:
| 19 | ٢ |
| 19 | ٣ |
| 19 | ٤ |
+----------------+---------+
db1 table和db2 table的charset是相同的:
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
当我尝试复制它们时,它会存储为'?'标记。
使用Perl INSERT STATEMENT:
$dbh2->do( 'SET NAMES utf8;');
$dbh2->do( 'SET COLLATION utf8_general_ci;');
$select = $dbh1->prepare("SELECT * FROM db1");
$insert = $dbh2->prepare("INSERT INTO db2 VALUES(?,?,?,?)");
$select->execute;
while ( my($WORD,$SENSITIVE,$REGEXP) = $select->fetchrow_array )
{
$insert->execute($WORD,$SENSITIVE,$REGEXP,'NULL');
}
WORD是列,其中包含urdu字符。
答案 0 :(得分:0)
在纯ASCII中无法看到这些字符。 MySQL实例未配置为默认情况下从客户端连接期望UTF-8编码。
在插入操作之前运行以下查询:
SET NAMES utf8;
有关连接字符集的详细信息,您可以看到MySQL Documentation。