我正在努力解决mysql导入问题,通常的补救办法似乎没有用。我正在尝试将字段从一个数据库复制到另一个数据库(两个Drupal系统)。
运行“在数据库上显示表状态”我注意到源表是utf8_bin,目标表是utf8_general_ci。
我目前正在进行这样的导入:
$olddb = mysql_connect("localhost", "user", "password");
mysql_select_db("origin", $olddb);
$result = mysql_query("set names utf8", $olddb);
$newdb = mysql_connect("localhost", "user", "password");
mysql_select_db("destination", $newdb);
$result = mysql_query("set names utf8", $newdb);
$result = mysql_query("select first_name from origin_table", $olddb);
$row = mysql_fetch_array($result);
$query = "update destination_table set first_name = \"".$row["first_name"]."\"";
$result = mysql_query($query, $olddb);
文本看起来像是正确导入但是当我尝试在Drupal中编辑相同的字段时,我在每个字符之间都会得到以下奇怪的问号字符。
Safari浏览器中的字段
Firefox浏览器中的字段
有什么想法吗?
答案 0 :(得分:0)
您如何从PHP->浏览器输出数据?您需要发出适当的标头来告诉浏览器期望UTF-8文本,例如:
header("Content-Type: text/plain; charset=utf-8");
鉴于“怪异”字符,我猜FF正在将文本视为非unicode,如iso8859-1并假设为1个字节/字符。