MySQL - как мне конвертировать всю базу данных в utf8 - PullRequest
2 голосов
/ 25 июля 2011

Я пытаюсь выяснить, как преобразовать всю базу данных в 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);

в моем коде?

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Я бы посоветовал вам использовать этот небольшой скрипт для преобразования ваших данных. И убедитесь, что у вас есть свежая резервная копия вашей базы данных.

<?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);
?>
1 голос
/ 25 июля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...