Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-如何将整个数据库转换为utf8_Mysql_Encoding_Utf 8 - Fatal编程技术网

MySQL-如何将整个数据库转换为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

我试图找出如何将整个数据库转换为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);

在我的代码中?

也许这将有助于:


我建议您使用这个小脚本来转换数据。 并确保有数据库的新备份

<?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。这将在运行时更改这两个变量。服务器重新启动后,您必须再次执行这些查询