Index: wp-includes/taxonomy.php
===================================================================
--- wp-includes/taxonomy.php	(revision 21010)
+++ wp-includes/taxonomy.php	(working copy)
@@ -1479,10 +1479,10 @@
 	if ( '' === $slug = sanitize_title($term) )
 		return 0;
 
-	$where = 't.slug = %s';
-	$else_where = 't.name = %s';
-	$where_fields = array($slug);
-	$else_where_fields = array($term);
+	$where = 't.name LIKE BINARY %s';
+	$else_where = 't.slug = %s';
+	$where_fields = array($term);
+	$else_where_fields = array($slug);
 	if ( !empty($taxonomy) ) {
 		$parent = (int) $parent;
 		if ( $parent > 0 ) {
@@ -2056,7 +2056,7 @@
 		}
 	}
 
-	if ( $term_id = term_exists($slug) ) {
+	if ( $term_id = term_exists($name) ) {
 		$existing_term = $wpdb->get_row( $wpdb->prepare( "SELECT name FROM $wpdb->terms WHERE term_id = %d", $term_id), ARRAY_A );
 		// We've got an existing term in the same taxonomy, which matches the name of the new term:
 		if ( is_taxonomy_hierarchical($taxonomy) && $existing_term['name'] == $name && $exists = term_exists( (int) $term_id, $taxonomy ) ) {
