diff --git a/modules/search.module b/modules/search.module
index 130429f77415d88cddb2279af0cae0dbb38b76d1..908509da962e95ffda2f480b293ba4cbfa2f667d 100644
--- a/modules/search.module
+++ b/modules/search.module
@@ -165,7 +165,7 @@ function search_menu($may_cache) {
     // To remember the user's search keywords when switching across tabs,
     // we dynamically add the keywords to the search tabs' paths.
     $keys = search_get_keys();
-    $keys = strlen($keys) ? '/'. $keys : '';
+    $keys = strlen($keys) ? '/'. drupal_urlencode($keys) : '';
     foreach (module_list() as $name) {
       if (module_hook($name, 'search') && $title = module_invoke($name, 'search', 'name')) {
         $items[] = array('path' => 'search/'. $name . $keys, 'title' => $title,
diff --git a/modules/search/search.module b/modules/search/search.module
index 130429f77415d88cddb2279af0cae0dbb38b76d1..908509da962e95ffda2f480b293ba4cbfa2f667d 100644
--- a/modules/search/search.module
+++ b/modules/search/search.module
@@ -165,7 +165,7 @@ function search_menu($may_cache) {
     // To remember the user's search keywords when switching across tabs,
     // we dynamically add the keywords to the search tabs' paths.
     $keys = search_get_keys();
-    $keys = strlen($keys) ? '/'. $keys : '';
+    $keys = strlen($keys) ? '/'. drupal_urlencode($keys) : '';
     foreach (module_list() as $name) {
       if (module_hook($name, 'search') && $title = module_invoke($name, 'search', 'name')) {
         $items[] = array('path' => 'search/'. $name . $keys, 'title' => $title,