Обратите внимание, что в Вашем ajax запросе приведение кодировки не наблюдается. То есть проблемма не на стороне сервера, она на стороне клиента. Для решения проблеммы мало указать кодировку (хотя даже этого вы не делаете, возможно Вам везет и она по умолчанию utf-8. Необходимо так же провести конвертацию языка в escape строку с помощью функции: javascript.ru/encodeURI.
Прошу так же обратить внимание на то, что хоть браузер и показывает русский язык в строке запроса, это совершенно не значит, что он отправляет запрос адреса на русском языке.
У Вас имеются проблеммы с кодировкой - это раз.
Два - для превращения в язык оригинала, как указано в топике нужно использовать обратную функцию: Uri.UnescapeDataString.
Гарантии касательно объема никто дать не может. Но стандартом рекомендуется объем в 5 мегабайт. Имейте ввиду, что эти данные могут быть внезапно для Вас удалены: при очистке диска, переустановкие браузера или просто вручную. Нельзя опираться на локальное хранилище. Его стоит использовать по типу кеша: есть - хорошо, нет - и ладно.
Привожу пример: https://gist.github.com/Ph47/a972ca5a7dbbe5477cd4. Данный код выводит в консоль "пример русского текста" при запросе по адресу localhost:12345/?%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1...
Обратите внимание, что в Вашем ajax запросе приведение кодировки не наблюдается. То есть проблемма не на стороне сервера, она на стороне клиента. Для решения проблеммы мало указать кодировку (хотя даже этого вы не делаете, возможно Вам везет и она по умолчанию utf-8. Необходимо так же провести конвертацию языка в escape строку с помощью функции: javascript.ru/encodeURI.
Прошу так же обратить внимание на то, что хоть браузер и показывает русский язык в строке запроса, это совершенно не значит, что он отправляет запрос адреса на русском языке.