ericcartman, вы неправильно и поверхностно представляете процесс сетевого взаимодействия. Это мешает вам понять, что Java-программа может быть сервером сама по себе, в том числе асинхронным, и может принимать и обрабатывать запросы самостоятельно.
Всё верно, умные программисты, которые писали браузер, добавили в него код, который делает URL encoding за вас. Вам в вашей программе надо сделать то же самое.
Terras, это для вас. Я знаю людей годами клепающих сайты на всяких там Битриксах, Вордпрессах и Джумлах, которые ни черта не знают о стеке вызовов, ссылочных и примитивных типах, сокетах, ООП и прочем. Более того, для них это всё неподъёмно сложная область знаний.