MySQL-如何将整个数据库转换为utf8
我试图找出如何将整个数据库转换为utf8,并解决以下导致部分数据显示错误的问题。在这一点上,我只是感到困惑,我需要你的洞察力。以下是您可能需要的一些信息:MySQL-如何将整个数据库转换为utf8,mysql,encoding,utf-8,Mysql,Encoding,Utf 8,我试图找出如何将整个数据库转换为utf8,并解决以下导致部分数据显示错误的问题。在这一点上,我只是感到困惑,我需要你的洞察力。以下是您可能需要的一些信息: SHOW VARIABLES LIKE '%character%' returns: Variable_name Value character_set_client utf8 character_set_connection utf8 character_set_database latin1 character_set
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);
在我的代码中?也许这将有助于:
我建议您使用这个小脚本来转换数据。 并确保有数据库的新备份
<?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);
?>
我尝试了你的脚本,但仍然得到了字符集\客户端utf8字符集\连接utf8字符集\数据库拉丁字符集\文件系统二进制字符集\结果utf8字符集\服务器拉丁字符集\系统utf8字符集\目录/usr/share/mysql/charset/
导出数据,删除数据库并执行CREATE database dbname字符集utf8 COLLATE utf8\u general\u ci
对于字符集\服务器拉丁语
在mysql参考中读取,我不能在脚本中执行,因为我在服务器上的权限有限。我只能使用Plesk UI创建数据库。由于您的访问权限有限,您只能执行以下两个查询:set character\u set\u server=utf8代码>和设置字符集\数据库=utf8代码>。这将在运行时更改这两个变量。服务器重新启动后,您必须再次执行这些查询