Index: trac/ticket/query.py
===================================================================
--- trac/ticket/query.py	(revision 2202)
+++ trac/ticket/query.py	(working copy)
@@ -21,7 +21,7 @@
 from trac.core import *
 from trac.perm import IPermissionRequestor
 from trac.ticket import Ticket, TicketSystem
-from trac.util import escape, shorten_line, sql_escape, CRLF, TRUE
+from trac.util import escape, unescape, shorten_line, sql_escape, CRLF, TRUE
 from trac.web import IRequestHandler
 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor
 from trac.wiki import wiki_to_html, wiki_to_oneliner, IWikiMacroProvider, \
@@ -593,13 +593,14 @@
     def _format_link(self, formatter, ns, query, label):
         if query[0] == '?':
             return '<a class="query" href="%s">%s</a>' \
-                   % (formatter.href.query() + escape(query), escape(label))
+                   % (escape(formatter.href.query()) + query.replace(' ', '+'),
+                      label)
         else:
             from trac.ticket.query import Query, QuerySyntaxError
             try:
-                query = Query.from_string(formatter.env, query)
+                query = Query.from_string(formatter.env, unescape(query))
                 return '<a class="query" href="%s">%s</a>' \
-                       % (escape(query.get_href()), escape(label))
+                       % (escape(query.get_href()), label)
             except QuerySyntaxError, e:
                 return '<em class="error">[Error: %s]</em>' % escape(e)
 
Index: trac/Search.py
===================================================================
--- trac/Search.py	(revision 2202)
+++ trac/Search.py	(working copy)
@@ -241,5 +241,5 @@
                    query.replace('&amp;', '&').replace(' ', '+')
         else:
             href = formatter.href.search(q=query)
-        return '<a class="search" href="%s">%s</a>' % (href, label)
+        return '<a class="search" href="%s">%s</a>' % (escape(href), label)
 
Index: trac/wiki/tests/wiki-tests.txt
===================================================================
--- trac/wiki/tests/wiki-tests.txt	(revision 2235)
+++ trac/wiki/tests/wiki-tests.txt	(working copy)
@@ -242,19 +242,29 @@
 ==============================
 query:?order=priority
 
+query:?order=priority&owner=me
+
 query:status=new|reopened
 
 query:milestone!=
+
+query:milestone=1.0|2.0&owner=me
 ------------------------------
 <p>
 <a class="query" href="/query?order=priority">query:?order=priority</a>
 </p>
 <p>
+<a class="query" href="/query?order=priority&amp;owner=me">query:?order=priority&amp;owner=me</a>
+</p>
+<p>
 <a class="query" href="/query?status=new&amp;status=reopened&amp;order=priority">query:status=new|reopened</a>
 </p>
 <p>
 <a class="query" href="/query?milestone=%21&amp;order=priority">query:milestone!=</a>
 </p>
+<p>
+<a class="query" href="/query?milestone=1.0&amp;milestone=2.0&amp;owner=me&amp;order=priority">query:milestone=1.0|2.0&amp;owner=me</a>
+</p>
 ==============================
 {{{
 Preformatted text.
@@ -468,9 +478,9 @@
 [search:?q=bar&ticket=on Bar in Tickets]
 ------------------------------
 <p>
-<a class="search" href="/search?q=foo&wiki=on">search:?q=foo&amp;wiki=on</a>
-<a class="search" href="/search?q=foo+bar&wiki=on">search:"?q=foo bar&amp;wiki=on"</a>
-<a class="search" href="/search?q=bar&ticket=on">Bar in Tickets</a>
+<a class="search" href="/search?q=foo&amp;wiki=on">search:?q=foo&amp;wiki=on</a>
+<a class="search" href="/search?q=foo+bar&amp;wiki=on">search:"?q=foo bar&amp;wiki=on"</a>
+<a class="search" href="/search?q=bar&amp;ticket=on">Bar in Tickets</a>
 </p>
 ==============================
 '''Note:'''

