There's no rule that the record separator HAS to be '&' (or, rather "&" if you're writing it in HTML). This is why PHP offers the arg_separator.output initialisation and arg_separator.input settings.
You could use pretty much anything - except #. None of RFC2616, RFC3986, nor HTML401 specify any more than that. The closest any of them come is HTML401's recommendation that ".... implementors support the use of ';' in place of '&' to save authors the trouble of escaping '&' characters...".
Needless to say, whatever it is you use for the separator (if indeed your query component has a separator), then (a) the server has to recognise it as such, and (b) it has to be urlencoded if you mean it literally.