Index: wp-includes/formatting.php
===================================================================
--- wp-includes/formatting.php	(revision 8236)
+++ wp-includes/formatting.php	(working copy)
@@ -348,7 +348,14 @@
 	$title = str_replace('%', '', $title);
 	// Restore octets.
 	$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);
-
+	
+	// Preserve escaped octets.
+	$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
+	// Fix unicode characters in the wrong category
+	$title = preg_replace( '/[\p{P}\p{So}\p{M}\p{No}\p{Nl}]/u', '-', $title);
+	// Restore octets.
+	$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);
+	
 	$title = remove_accents($title);
 	if (seems_utf8($title)) {
 		if (function_exists('mb_strtolower')) {
@@ -356,7 +363,7 @@
 		}
 		$title = utf8_uri_encode($title, 200);
 	}
-
+	
 	$title = strtolower($title);
 	$title = preg_replace('/&.+?;/', '', $title); // kill entities
 	$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
