Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.500
diff -u -r1.500 common.inc
--- includes/common.inc	17 Dec 2005 10:35:59 -0000	1.500
+++ includes/common.inc	21 Dec 2005 23:03:24 -0000
@@ -963,6 +963,7 @@
   }
 
   $path = drupal_get_path_alias($path);
+  $path = drupal_urlencode($path);
 
   if (isset($fragment)) {
     $fragment = '#'. $fragment;
@@ -1251,13 +1252,15 @@
 /**
  * Wrapper around urlencode() which avoids Apache quirks.
  *
- * Should be used when placing arbitrary data inside the path of a clean URL.
+ * Should be used when placing arbitrary data in an URL. Note that Drupal paths
+ * are urlencoded() when passed through url() and do not require urlencoding()
+ * of individual components.
  *
  * @param $text
  *   String to encode
  */
 function drupal_urlencode($text) {
-  return variable_get('clean_url', '0') ? str_replace('%2F', '/', urlencode($text)) : urlencode($text);
+  return str_replace('%2F', '/', urlencode($text));
 }
 
 /**
Index: includes/locale.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/locale.inc,v
retrieving revision 1.60
diff -u -r1.60 locale.inc
--- includes/locale.inc	10 Dec 2005 19:26:47 -0000	1.60
+++ includes/locale.inc	21 Dec 2005 23:08:19 -0000
@@ -74,7 +74,7 @@
   foreach ($form['name'] as $key => $element) {
     // Don't take form control structures
     if (is_array($element) && element_child($key)) {
-      $rows[] = array(check_plain($key), form_render($form['name'][$key]), form_render($form['enabled'][$key]), form_render($form['sitedefault'][$key]), ($key != 'en' ? form_render($form['translation'][$key]) : message_na()), ($key != 'en' ? l(t('delete'), 'admin/locale/language/delete/'. drupal_urlencode($key)) : ''));
+      $rows[] = array(check_plain($key), form_render($form['name'][$key]), form_render($form['enabled'][$key]), form_render($form['sitedefault'][$key]), ($key != 'en' ? form_render($form['translation'][$key]) : message_na()), ($key != 'en' ? l(t('delete'), 'admin/locale/language/delete/'. $key) : ''));
     }
   }
   $header = array(array('data' => t('Code')), array('data' => t('English name')), array('data' => t('Enabled')), array('data' => t('Default')), array('data' => t('Translated')), array('data' => t('Operations')));
Index: modules/profile.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile.module,v
retrieving revision 1.123
diff -u -r1.123 profile.module
--- modules/profile.module	15 Dec 2005 16:34:48 -0000	1.123
+++ modules/profile.module	21 Dec 2005 23:07:33 -0000
@@ -146,7 +146,7 @@
 function profile_browse() {
 
   $name = arg(1);
-  $value = arg(2);
+  list(,,$value) = explode('/', $_GET['q'], 3);
 
   $field = db_fetch_object(db_query("SELECT DISTINCT(fid), type, title, page, visibility FROM {profile_fields} WHERE name = '%s'", $name));
 
@@ -276,9 +276,9 @@
       case 'textarea':
         return check_markup($value);
       case 'selection':
-        return $browse ? l($value, 'profile/'. drupal_urlencode($field->name) .'/'. drupal_urlencode($value)) : check_plain($value);
+        return $browse ? l($value, 'profile/'. $field->name .'/'. $value) : check_plain($value);
       case 'checkbox':
-        return $browse ? l($field->title, 'profile/'. drupal_urlencode($field->name)) : check_plain($field->title);
+        return $browse ? l($field->title, 'profile/'. $field->name) : check_plain($field->title);
       case 'url':
         return '<a href="'. check_url($value) .'">'. check_plain($value) .'</a>';
       case 'date':
Index: modules/search.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/search.module,v
retrieving revision 1.155
diff -u -r1.155 search.module
--- modules/search.module	21 Dec 2005 14:30:09 -0000	1.155
+++ modules/search.module	21 Dec 2005 23:07:33 -0000
@@ -165,7 +165,7 @@
     // 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) ? '/'. drupal_urlencode($keys) : '';
+    $keys = strlen($keys) ? '/'. $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,
@@ -881,7 +881,7 @@
       $type = 'node';
     }
     $keys = module_invoke($type, 'search', 'post', $_POST['edit']['keys']);
-    drupal_goto('search/'. drupal_urlencode($type) .'/'. drupal_urlencode(is_null($keys) ? $_POST['edit']['keys'] : $keys));
+    drupal_goto('search/'. $type .'/'. (is_null($keys) ? $_POST['edit']['keys'] : $keys));
   }
   else if ($type == '') {
     // Note: search/node can not be a default tab because it would take on the
@@ -898,7 +898,7 @@
       watchdog('search',
         t('Search: %keys (%type).', array('%keys' => theme('placeholder', $keys), '%type' => module_invoke($type, 'search', 'name'))),
         WATCHDOG_NOTICE,
-        l(t('results'), 'search/'. drupal_urlencode($type) .'/'. drupal_urlencode($keys))
+        l(t('results'), 'search/'. $type .'/'. $keys)
         );
 
       // Collect the search results:
Index: modules/taxonomy.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy.module,v
retrieving revision 1.246
diff -u -r1.246 taxonomy.module
--- modules/taxonomy.module	16 Dec 2005 06:23:46 -0000	1.246
+++ modules/taxonomy.module	21 Dec 2005 23:07:33 -0000
@@ -1044,9 +1044,6 @@
     drupal_not_found();
   }
 
-  // Needed for '+' to show up in RSS discovery URLs
-  $rss_tids = urlencode($str_tids);
-
   if ($tids) {
     $result = db_query(db_rewrite_sql('SELECT t.tid, t.name FROM {term_data} t WHERE t.tid IN (%s)', 't', 'tid'), implode(',', $tids));
     $tids = array(); // we rebuild the $tids-array so it only contains terms the user has access to.
@@ -1074,7 +1071,7 @@
           drupal_add_link(array('rel' => 'alternate',
                                 'type' => 'application/rss+xml',
                                 'title' => 'RSS - '. $title,
-                                'href' => url('taxonomy/term/'. $rss_tids .'/'. $depth .'/feed')));
+                                'href' => url('taxonomy/term/'. $str_tids .'/'. $depth .'/feed')));
 
           $output = taxonomy_render_nodes(taxonomy_select_nodes($tids, $operator, $depth, TRUE));
           $output .= theme('xml_icon', url("taxonomy/term/$rss_tids/$depth/feed"));

