如何解决mysql文本编码问题

时间:2011-06-01 03:08:06

标签: php mysql encoding drupal-6

我正在努力解决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浏览器中的字段

Fields in Safari browser

Firefox浏览器中的字段

Fields in Firefox browser

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您如何从PHP->浏览器输出数据?您需要发出适当的标头来告诉浏览器期望UTF-8文本,例如:

header("Content-Type: text/plain; charset=utf-8");

鉴于“怪异”字符,我猜FF正在将文本视为非unicode,如iso8859-1并假设为1个字节/字符。