replaceAll not working ( I think so )
with + like a real browser.
is correct syntax for UTF-8. But you are 50% wrong.
%20 means space in UTF8 so when your browser reads the GET parameters it will just read exactly what you searched in the input.
It replaces the space with %20