我正在管理一个由另一个程序员创建的网站。网页的内容从数据库(MySQL / SQL)加载——他使用 JOOMLA 进行设计。网页上显示了一些不应该出现的特殊字符(e to their st)。我想在服务器(SQL 服务器)上将默认字符集更改为 UTF_8_general_ci。请问我该怎么做?谢谢。
问问题
218 次
3 回答
0
您可以登录到服务器并从那里更改 SQL 表定义。如果您使用的是 cPanel,您需要选择的选项是 MYPhPAdmin。joomla 表的列表将在那里,通常带有前缀 jos_
于 2012-10-30T15:46:29.633 回答
0
更改 MySQL 数据库中所有表的排序规则可能会很耗时,具体取决于您拥有多少表。
That's why we recommend using the following PHP script for changing the collation for all tables at a time:
<?php
$execute_sql = false;
$host = 'host name';
$username = 'user_name';
$password = 'password';
$dbname = 'databse_name';
$db = new mysqli($host, $username, $password, $dbname);
//$connect = mysql_connect('localhost','root','Admin@123');
//$select_db = mysql_select_db('friends') or die('database not selected'.mysql_error());
$collation = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci';
$collationPK = 'CHARACTER SET utf8 COLLATE utf8_bin';
$result = $db->query("SET foreign_key_checks = 0");
echo '<div>';
if($execute_sql) $db->query("ALTER DATABASE $dbname $collation");
$result = $db->query("SHOW TABLES");
$count = 0;
while($row = $result->fetch_assoc()) {
$table = $row['Tables_in_'.$dbname];
if($execute_sql) $db->query("ALTER TABLE $table DEFAULT $collation");
$result1 = $db->query("SHOW FULL COLUMNS FROM $table");
$alter = '';
while($row1 = $result1->fetch_assoc()) {
if (preg_match('~char|text|enum|set~', $row1["Type"])) {
// support a different collation for primary keys
if ($row1["Key"] == "PRI" || $row1["Key"] == "MUL") {
$newCollation = $collationPK;
} else {
$newCollation = $collation;
}
// check if we actually need to change the collation
$alter .= (strlen($alter)?", \n":" ") . "MODIFY `$row1[Field]` $row1[Type] $newCollation" . ($row1["Null"] ? "" : " NOT NULL") . ($row1["Default"] && $row1["Default"] != "NULL" ? " DEFAULT '$row1[Default]'" : "");
}
}
if(strlen($alter)){
$sql = "ALTER TABLE $table".$alter.";";
echo "<div>$sql\n\n</div>";
$db->query($sql);
}
$count++;
}
echo '</div>';
?>
于 2012-11-02T07:43:09.007 回答
0
老实说,如果说明了实际命令,那就更清楚了。
只更新数据库中一个表的字符集。请执行下列操作:
alter table
books
convert to character set utf8 collate utf8_general_ci;要更改已创建的数据库的字符集,请执行以下操作:
set collation_database=utf8_general_ci
您还可以通过以下方式查看分配给每个表的字符集
show table status \G
于 2015-03-26T07:50:05.387 回答