diff --git a/lib/Cake/Routing/Route/CakeRoute.php b/lib/Cake/Routing/Route/CakeRoute.php
index a81ec402d..28d3417ec 100644
--- a/lib/Cake/Routing/Route/CakeRoute.php
+++ b/lib/Cake/Routing/Route/CakeRoute.php
@@ -240,7 +240,7 @@ class CakeRoute {
 		}
 
 		if (isset($route['_trailing_'])) {
-			$route['pass'][] = $route['_trailing_'];
+			$route['pass'][] = rawurldecode($route['_trailing_']);
 			unset($route['_trailing_']);
 		}
 
diff --git a/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php b/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php
index d4bf61cf4..55f836339 100644
--- a/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php
+++ b/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php
@@ -857,4 +857,23 @@ class CakeRouteTest extends CakeTestCase {
 		);
 		$this->assertEquals($expected, $result);
 	}
+
+/**
+ * Test the /** special type on parsing - UTF8.
+ *
+ * @return void
+ */	
+	
+	public function testParseTrailingUTF8() {
+		$route = new CakeRoute( '/category/**', array('controller' => 'categories','action' => 'index'));
+		$result = $route->parse('/category/%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84');
+		$expected = array(
+			'controller' => 'categories',
+			'action' => 'index',
+			'pass' => array('موبایل'),
+			'named' => array()
+		);
+		$this->assertEquals($expected, $result);
+
+	}	
 }