Преобразование строки в URL - C#
Формулировка задачи:
Нужно преобразовать строку в url для отправки запроса на поиск.
Использовал HttpUtility.UrlEncode(string str), но он преобразовывает кирилицу не в ту кодировку.
Для примера запрос "hello, тест" возвращается в таком виде: "hello%2c+%d1%82%d0%b5%d1%81%d1%82"
а нужно "hello%2C+%F2%E5%F1%F2".
Попытки вызвать перегруженную версию сего метода ни к чему хорошему не привели.
Как сделать правильно? (Нужно правильно, так как "индийский" вариант я нашел)
Есть идеи, решения?
Решение задачи: «Преобразование строки в URL»
textual
Листинг программы
//метод словаря
public static Dictionary<char,string> CreateDictionary()
{
return new Dictionary<char, string>
{
{' ',"+"},
{',',"%2C"},
{'+',"%2B"},
{'%',"%25"},
{'&',"%26"},
{'Ё',"%A8"},
{'ё',"%B8"},
{'А',"%C0"},
{'Б',"%C1"},
{'В',"%C2"},
{'Г',"%C3"},
{'Д',"%C4"},
{'Е',"%C5"},
{'Ж',"%C6"},
{'З',"%C7"},
{'И',"%C8"},
{'Й',"%C9"},
{'К',"%CA"},
{'Л',"%CB"},
{'М',"%CC"},
{'Н',"%CD"},
{'О',"%CE"},
{'П',"%CF"},
{'Р',"%D0"},
{'С',"%D1"},
{'Т',"%D2"},
{'У',"%D3"},
{'Ф',"%D4"},
{'Х',"%D5"},
{'Ц',"%D6"},
{'Ч',"%D7"},
{'Ш',"%D8"},
{'Щ',"%D9"},
{'Ъ',"%DA"},
{'Ы',"%DB"},
{'Ь',"%DC"},
{'Э',"%DD"},
{'Ю',"%DE"},
{'Я',"%DF"},
{'а',"%E0"},
{'б',"%E1"},
{'в',"%E2"},
{'г',"%E3"},
{'д',"%E4"},
{'е',"%E5"},
{'ж',"%E6"},
{'з',"%E7"},
{'и',"%E8"},
{'й',"%E9"},
{'к',"%EA"},
{'л',"%EB"},
{'м',"%EC"},
{'н',"%ED"},
{'о',"%EE"},
{'п',"%EF"},
{'р',"%F0"},
{'с',"%F1"},
{'т',"%F2"},
{'у',"%F3"},
{'ф',"%F4"},
{'х',"%F5"},
{'ц',"%F6"},
{'ч',"%F7"},
{'ш',"%F8"},
{'щ',"%F9"},
{'ъ',"%FA"},
{'ы',"%FB"},
{'ь',"%FC"},
{'э',"%FD"},
{'ю',"%FE"},
{'я',"%FF"},
};
} //не лезь!
//это в коде
string SearchString = Console.ReadLine();
if (Regex.IsMatch(SearchString, @"[А-Яа-я,Ё,ё]+$")) //ищем кирилицу
{
var dictionary = CreateDictionary();
string CorrectedSearchString ="";
for (int i = 0; i < SearchString.Length; i++)
{
if (dictionary.Keys.Contains(SearchString[i]))
{
CorrectedSearchString += dictionary[SearchString[i]];
}
else
{
CorrectedSearchString += SearchString[i];
}
}
SearchString = CorrectedSearchString;
}