Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 19393)
+++ wp-includes/post.php	(working copy)
@@ -2490,7 +2490,12 @@
 		else
 			$post_name = '';
 	} else {
-		$post_name = sanitize_title($post_name);
+		// On updates, we need to check to see if it's using an old sanitization context, or the newer Save context
+		$check_name = sanitize_title(urlencode($post_name), '', 'query'); // sanitize_title_for_query(), but spelt out here for readability
+		if ( $update && strtolower(urlencode($post_name)) == $check_name )
+			$post_name = $check_name;
+		else // slug has changed or uses newer (default) sanitization
+			$post_name = sanitize_title($post_name);
 	}
 
 	// If the post date is empty (due to having been new or a draft) and status is not 'draft' or 'pending', set date to now
@@ -3153,7 +3158,7 @@
 	$page_path = str_replace('%20', ' ', $page_path);
 	$parts = explode( '/', trim( $page_path, '/' ) );
 	$parts = array_map( 'esc_sql', $parts );
-	$parts = array_map( 'sanitize_title', $parts );
+	$parts = array_map( 'sanitize_title_for_query', $parts );
 
 	$in_string = "'". implode( "','", $parts ) . "'";
 	$post_type_sql = $post_type;
