Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.343
diff -u -p -r1.343 form.inc
--- includes/form.inc	20 Jun 2009 15:17:38 -0000	1.343
+++ includes/form.inc	26 Jun 2009 16:19:43 -0000
@@ -2679,7 +2679,7 @@ function _form_set_class(&$element, $cla
  */
 function form_clean_id($id = NULL) {
   $seen_ids = &drupal_static(__FUNCTION__, array());
-  $id = str_replace(array('][', '_', ' '), '-', $id);
+  $id = str_replace(array('-', '%', '_'), array('---', '--', '-'), urlencode(urlencode($id)));
 
   // Ensure IDs are unique. The first occurrence is held but left alone.
   // Subsequent occurrences get a number appended to them. This incrementing
