Index: wp-includes/classes.php
===================================================================
--- wp-includes/classes.php	(revision 15970)
+++ wp-includes/classes.php	(working copy)
@@ -170,7 +170,7 @@
 			// front.  For path info requests, this leaves us with the requesting
 			// filename, if any.  For 404 requests, this leaves us with the
 			// requested permalink.
-			$req_uri = str_replace($pathinfo, '', $req_uri);
+			$req_uri = str_replace($pathinfo, '', rawurldecode($req_uri));
 			$req_uri = trim($req_uri, '/');
 			$req_uri = preg_replace("|^$home_path|", '', $req_uri);
 			$req_uri = trim($req_uri, '/');
@@ -207,7 +207,8 @@
 					$request_match = $req_uri . '/' . $request;
 
 				if ( preg_match("#^$match#", $request_match, $matches) ||
-					preg_match("#^$match#", urldecode($request_match), $matches) ) {
+					preg_match("#^$match#", urldecode($request_match), $matches) ||
+					preg_match("#^$match#", strtolower(rawurlencode($request_match)), $matches)) {
 					// Got a match.
 					$this->matched_rule = $match;
 
