Index: includes/update.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/update.inc,v
retrieving revision 1.42
diff -u -p -r1.42 update.inc
--- includes/update.inc	11 Apr 2010 17:16:45 -0000	1.42
+++ includes/update.inc	16 Apr 2010 00:22:16 -0000
@@ -671,6 +671,11 @@ function update_parse_db_url($db_url) {
       'host' => urldecode($url['host']),
       'port' => isset($url['port']) ? urldecode($url['port']) : '',
     );
+    // Determine default database collation. Borrowed from PMA.
+    $collation = db_query('SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = :database', array(':database' => $databases[$database]['default']['database']))->fetchField();
+    if ($collation) {
+      $databases[$database]['default']['default_collation'] = $collation;
+    }
   }
   return $databases;
 }
Index: includes/database/mysql/schema.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/database/mysql/schema.inc,v
retrieving revision 1.36
diff -u -p -r1.36 schema.inc
--- includes/database/mysql/schema.inc	7 Apr 2010 15:07:59 -0000	1.36
+++ includes/database/mysql/schema.inc	15 Apr 2010 21:58:19 -0000
@@ -74,10 +74,10 @@ class DatabaseSchema_mysql extends Datab
    *   An array of SQL statements to create the table.
    */
   protected function createTableSql($name, $table) {
-    // Provide some defaults if needed
+    // Provide some defaults if needed.
     $table += array(
       'mysql_engine' => 'InnoDB',
-      'mysql_character_set' => 'UTF8',
+      'mysql_character_set' => '',
     );
 
     $sql = "CREATE TABLE {" . $name . "} (\n";
@@ -96,7 +96,13 @@ class DatabaseSchema_mysql extends Datab
     // Remove the last comma and space.
     $sql = substr($sql, 0, -3) . "\n) ";
 
-    $sql .= 'ENGINE = ' . $table['mysql_engine'] . ' DEFAULT CHARACTER SET ' . $table['mysql_character_set'];
+    $sql .= 'ENGINE = ' . $table['mysql_engine'];
+
+    // Only add a character set, if explicitly defined. By default, MySQL uses
+    // the default database collation for created tables.
+    if (!empty($table['mysql_character_set'])) {
+      $sql .= ' DEFAULT CHARACTER SET ' . $table['mysql_character_set'];
+    }
 
     // Add table comment.
     if (!empty($table['description'])) {
