- <?php
- define('DB_NAME', 'putyourdbnamehere'); // 數據庫名稱
- define('DB_USER', 'usernamehere'); // MySQL用戶名
- define('DB_PASSWORD', 'yourpasswordhere'); // MYSQL密碼
- define('DB_HOST', 'localhost'); // 很大可能你需修改此
- function UTF8_DB_Converter_DoIt() {
- $tables = array();
- $tables_with_fields = array();
- // Since we cannot use the WordPress Database Abstraction Class (wp-db.php),
- // we have to make an a stand-alone/direct connection to the database.
- $link_id = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die('Error establishing a database connection');
- mysql_select_db(DB_NAME, $link_id);
- // Gathering information about tables and all the text/string fields that can be affected
- // during the conversion to UTF-8.
- $resource = mysql_query("SHOW TABLES", $link_id);
- while ( $result = mysql_fetch_row($resource) )
- $tables[] = $result[0];
- if ( !empty($tables) ) {
- foreach ( (array) $tables as $table ) {
- $resource = mysql_query("EXPLAIN $table", $link_id);
- while ( $result = mysql_fetch_assoc($resource) ) {
- if ( preg_match('/(char)|(text)|(enum)|(set)/', $result['Type']) )
- $tables_with_fields[$table][$result['Field']] = $result['Type'] . " " . ( "YES" == $result['Null'] ? "" : "NOT " ) . "NULL " . ( !is_null($result['Default']) ? "DEFAULT '". $result['Default'] ."'" : "" );
- }
- }
- // Change all text/string fields of the tables to their corresponding binary text/string representations.
- foreach ( (array) $tables as $table )
- mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET binary", $link_id);
- // Change database and tables to UTF-8 Character set.
- mysql_query("ALTER DATABASE " . DB_NAME . " CHARACTER SET utf8", $link_id);
- foreach ( (array) $tables as $table )
- mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET utf8", $link_id);
- // Return all binary text/string fields previously changed to their original representations.
- foreach ( (array) $tables_with_fields as $table => $fields ) {
- foreach ( (array) $fields as $field_type => $field_options ) {
- mysql_query("ALTER TABLE $table MODIFY $field_type $field_options", $link_id);
- }
- }
- // Optimize tables and finally close the mysql link.
- foreach ( (array) $tables as $table )
- mysql_query("OPTIMIZE TABLE $table", $link_id);
- mysql_close($link_id);
- } else {
- die('<strong>There are no tables?</strong>');
- }
- return true;
- }
- UTF8_DB_Converter_DoIt();
- ?>
複製代碼 |