Изначально в URL можно было использовать только ограниченный набор символов: латинские буквы, цифры и лишь некоторые знаки препинания. Современные браузеры научились справляться с этой проблемой, но бывают случаи, когда эта проблема возникает вновь, например, в ajax-запросах, сделанных из старых версий браузера Internet Explorer.
Поэтому, лучше подстраховаться, и закодировать параметры URL, в которых могут быть переданы нелатинские символы, пробелы, вспомогательные знаки и т.п. Особенно это касается случая, когда через URL передается поисковый запрос, так как процесс ввода текста пользователем проконтролировать невозможно – он может ввести любые символы, на любои языке.
Кодировать весь URL не стоит, достаточно сделать это только для тех данных, которые могут содержать запрещенные символы (согласно устаревшей версии синтаксиса RFC 2396 от 1998 года)