diff --git wp-includes/wp-db.php wp-includes/wp-db.php
index 0bd7a18..2bf27f7 100644
--- wp-includes/wp-db.php
+++ wp-includes/wp-db.php
@@ -2274,8 +2274,12 @@ class wpdb {
 			return $this->table_charset[ $tablekey ];
 		}
 
-		$charsets = $columns = array();
-		$results = $this->get_results( "SHOW FULL COLUMNS FROM `$table`" );
+		$charsets = $columns = array();		
+		$table_parts = explode('.', $table);
+		$table_parts = array_map(function($var) { return "`".$var."`"; },$table_parts);
+		$table = implode(".",$table_parts);
+
+		$results = $this->get_results( "SHOW FULL COLUMNS FROM $table" );
 		if ( ! $results ) {
 			return new WP_Error( 'wpdb_get_table_charset_failure' );
 		}
@@ -2799,26 +2803,26 @@ class wpdb {
 		$query = preg_replace( '/\((?!\s*select)[^(]*?\)/is', '()', substr( $query, 0, 1000 ) );
 
 		// Quickly match most common queries.
-		if ( preg_match( '/^\s*(?:'
+		if ( preg_match( '/(*UTF8)^\s*(?:'
 				. 'SELECT.*?\s+FROM'
 				. '|INSERT(?:\s+LOW_PRIORITY|\s+DELAYED|\s+HIGH_PRIORITY)?(?:\s+IGNORE)?(?:\s+INTO)?'
 				. '|REPLACE(?:\s+LOW_PRIORITY|\s+DELAYED)?(?:\s+INTO)?'
 				. '|UPDATE(?:\s+LOW_PRIORITY)?(?:\s+IGNORE)?'
 				. '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:\s+FROM)?'
-				. ')\s+`?([\w-]+)`?/is', $query, $maybe ) ) {
+				. ')\s+`?([[:alnum:]-._$]+)`?/uis', $query, $maybe ) ) {
 			return $maybe[1];
 		}
 
 		// SHOW TABLE STATUS and SHOW TABLES
-		if ( preg_match( '/^\s*(?:'
+		if ( preg_match( '/(*UTF8)^\s*(?:'
 				. 'SHOW\s+TABLE\s+STATUS.+(?:LIKE\s+|WHERE\s+Name\s*=\s*)'
 				. '|SHOW\s+(?:FULL\s+)?TABLES.+(?:LIKE\s+|WHERE\s+Name\s*=\s*)'
-				. ')\W([\w-]+)\W/is', $query, $maybe ) ) {
+				. ')\W([[:alnum:]-._$]+)\W/uis', $query, $maybe ) ) {
 			return $maybe[1];
 		}
 
 		// Big pattern for the rest of the table-related queries.
-		if ( preg_match( '/^\s*(?:'
+		if ( preg_match( '/(*UTF8)^\s*(?:'
 				. '(?:EXPLAIN\s+(?:EXTENDED\s+)?)?SELECT.*?\s+FROM'
 				. '|DESCRIBE|DESC|EXPLAIN|HANDLER'
 				. '|(?:LOCK|UNLOCK)\s+TABLE(?:S)?'
@@ -2832,7 +2836,7 @@ class wpdb {
 				. '|LOAD\s+DATA.*INFILE.*INTO\s+TABLE'
 				. '|(?:GRANT|REVOKE).*ON\s+TABLE'
 				. '|SHOW\s+(?:.*FROM|.*TABLE)'
-				. ')\s+\(*\s*`?([\w-]+)`?\s*\)*/is', $query, $maybe ) ) {
+				. ')\s+\(*\s*`?([[:alnum:]-._$]+)`?\s*\)*/uis', $query, $maybe ) ) {
 			return $maybe[1];
 		}
 
