Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.486
diff -u -r1.486 common.inc
--- includes/common.inc	18 Oct 2005 14:54:54 -0000	1.486
+++ includes/common.inc	20 Oct 2005 10:04:39 -0000
@@ -1296,6 +1296,18 @@
 }
 
 /**
+ * Wrapper around urlencode() which avoids Apache quirks.
+ *
+ * Should be used when placing arbitrary data inside the path of a clean URL. 
+ *
+ * @param $text
+ *   String to encode
+ */
+function drupal_urlencode($text) {
+  return variable_get('clean_url', '0') ? str_replace('%2F', '/', urlencode($text)) : urlencode($text);
+}
+
+/**
  * Performs one or more XML-RPC request(s).
  *
  * @param $url
Index: includes/locale.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/locale.inc,v
retrieving revision 1.55
diff -u -r1.55 locale.inc
--- includes/locale.inc	13 Oct 2005 10:02:31 -0000	1.55
+++ includes/locale.inc	20 Oct 2005 09:58:14 -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/'. 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/'. drupal_urlencode($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')));
cvs diff: Diffing misc
cvs diff: Diffing modules
Index: modules/profile.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile.module,v
retrieving revision 1.114
diff -u -r1.114 profile.module
--- modules/profile.module	13 Oct 2005 10:02:31 -0000	1.114
+++ modules/profile.module	20 Oct 2005 09:47:03 -0000
@@ -252,9 +252,9 @@
       case 'textarea':
         return check_markup($value);
       case 'selection':
-        return $browse ? l($value, "profile/$field->name/$value") : check_plain($value);
+        return $browse ? l($value, 'profile/'. drupal_urlencode($field->name) .'/'. drupal_urlencode($value)) : check_plain($value);
       case 'checkbox':
-        return $browse ? l($field->title, "profile/$field->name") : check_plain($field->title);
+        return $browse ? l($field->title, 'profile/'. drupal_urlencode($field->name)) : check_plain($field->title);
       case 'url':
         return '<a href="'. check_url($value) .'">'. check_plain($value) .'</a>';
       case 'date':
@@ -273,7 +273,7 @@
         $fields = array();
         foreach ($values as $value) {
           if ($value = trim($value)) {
-            $fields[] = $browse ? l($value, "profile/". urlencode($field->name) ."/". urlencode($value)) : check_plain($value);
+            $fields[] = $browse ? l($value, "profile/". drupal_urlencode($field->name) ."/". drupal_urlencode($value)) : check_plain($value);
           }
         }
         return implode(', ', $fields);
Index: modules/search.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/search.module,v
retrieving revision 1.137
diff -u -r1.137 search.module
--- modules/search.module	18 Oct 2005 14:41:27 -0000	1.137
+++ modules/search.module	20 Oct 2005 09:45:08 -0000
@@ -811,7 +811,7 @@
       $type = 'node';
     }
     $keys = module_invoke($type, 'search', 'post', $_POST['edit']['keys']);
-    drupal_goto('search/'. urlencode($type) .'/'. urlencode(is_null($keys) ? $_POST['edit']['keys'] : $keys));
+    drupal_goto('search/'. drupal_urlencode($type) .'/'. drupal_urlencode(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
@@ -828,7 +828,7 @@
       watchdog('search',
         t('Search: %keys (%type).', array('%keys' => theme('placeholder', $keys), '%type' => module_invoke($type, 'search', 'name'))),
         WATCHDOG_NOTICE,
-        l(t('results'), 'search/'. urlencode($type) .'/'. urlencode($keys))
+        l(t('results'), 'search/'. drupal_urlencode($type) .'/'. drupal_urlencode($keys))
         );
 
       // Collect the search results:
