2011-07-25 60 views
2

我想弄清楚如何將整個數據庫轉換爲utf8並解決以下問題,導致部分數據顯示不正確。在這一點上,我只是困惑,我需要你的洞察力。這裏的一些信息,你可能會需要:MySQL - 如何將整個數據庫轉換爲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轉換,但我不知道如何執行此oreration或可能發生的事情的數據(即,數據格式不正確,不正確編碼)。

一旦我已經完成了轉換,我還需要

header("Content-type: text/html; charset=utf-8"); 
and mysql_query("SET NAMES 'utf8'", $connection); 
在我的代碼

回答

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); 
?> 
+0

我想你的劇本,但我依然得到 'character_set_client字符\t UTF8 是character_set_connection \t UTF8 character_set_database \t LATIN1 character_set_filesystem \t二進制 character_set_results \t UTF8 被character_set_server \t LATIN1 character_set_system \t UTF8 character_sets_dir \t/usr/share/mysql/charsets /' – bikey77

+0

導出數據,刪除數據庫並執行'CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;'對於'character_set_server latin',請參閱mysql參考http://dev.mysql.com/doc/refman/5.0/en/charset -server.html – DKSan

+0

我不能在腳本中執行它,因爲我在服務器上的權限有限。我只能使用Plesk UI創建數據庫。 – bikey77