我正在试图弄清楚如何将整个数据库转换为utf8并解决以下问题,导致部分数据显示不正确。在这一点上,我只是困惑,我需要你的洞察力。以下是您可能需要的一些信息:
SHOW VARIABLES LIKE '%character%' returns:
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
我想将所有数据转换为utf8,但我不确定如何执行此操作或数据可能发生的情况(即格式错误的数据,编码错误)。
完成转换后,我还需要
header("Content-type: text/html; charset=utf-8");
and mysql_query("SET NAMES 'utf8'", $connection);
在我的代码中?
答案 0 :(得分:1)
答案 1 :(得分:1)
我建议你使用这个小脚本来转换你的数据。 并确保您有一个新的数据库备份。
<?php
// Database info
$dbhost = 'localhost';
$dbuser = 'db_user';
$dbpass = 'password';
$dbname = 'db_name';
//---------------
header('Content-type: text/plain');
$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die( mysql_error() );
$db = mysql_select_db($dbname) or die( mysql_error() );
$sql = 'SHOW TABLES';
$result = mysql_query($sql) or die( mysql_error() );
while ( $row = mysql_fetch_row($result) )
{
$table = mysql_real_escape_string($row[0]);
$sql = "ALTER TABLE `$table` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
mysql_query($sql) or die( mysql_error() );
print "$table changed to UTF-8.\n";
}
mysql_close($dbconn);
?>