Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2011, 21:31   #1
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
Вопрос Закодированный текст в кодировке windows-1251

Здравствуйте, хочу спросить, каким образом можно текст в кодировке windows-1251 закодировать в url энкод?
например есть строка
фбщвшmа5шжлkгтьlгбмmшmгzгzk3рzрyштр 0гжмiвжзiр2ащфэе

мне из нее в делфи нужно получить
%F4%E1%F9%E2%F8m%E05%F8%E6%EBk%E3%F 2%FCl%E3%E1%ECm%F8m%E3z%E3zk3%F0z%F 0y%F8%F2%F00%E3%E6%ECi%E2%E6%E7i%F0 2%E0%F9%F4%FD%E5
Есть готовые функции, или есть у кого совет, как это сделать?
Заранее, Спасибо!


Как вариант, можно перебрать строку по буквам, и каждую русскую букву заменить на соотв. энкод.
попытался это набросать:
Код:
Function UrlEncode(Var S:string):String;
var
//счетчики
i,j:integer;
//Выходная переменная
Str:String;
//Флаг "нашли русскую букву"
Found:boolean;
begin
//обнуляем выходную переменную
Str:='';
//Парсим каждую букву строки
  for I := 0 to Length(s)-1 do
    begin
      Found:=false;
    //по русскому алфавиту сверяем
      for J := 0 to 32 do
        begin
         //если текущая буква русская
          if (S[i]=RusSymbol[j]) then
            begin
            //добавляем в результат ее урл энкод
            Str:=Str+Enc[j];
            Found:=true;
            end;
        end;
If Not Found then Str:=Str+s[i]

    end;
    Result:=str;
end;
Но эта функция не работает, если в нее передать строку.
Скажите пож-ста почему?

Последний раз редактировалось )Игнат(; 15.04.2011 в 22:09.
)Игнат( вне форума Ответить с цитированием
Старый 15.04.2011, 22:25   #2
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию

Простите за глупый вопрос
Сам поправил
Тупой перебор по массиву русских букв, и соответствующей замене на энкод.
Код:
Function UrlEncode(Var S:string):String;
var
//счетчики
i,j:integer;
//Выходная переменная
Str:String;
//Флаг "нашли русскую букву"
Found:boolean;
begin
//обнуляем выходную переменную
Str:='';
//Парсим каждую букву строки
  for I := 1 to Length(s) do
    begin
      Found:=false;
    //по русскому алфавиту сверяем
      for J := 0 to 32 do
        begin
         //если текущая буква русская
          if (S[i]=RusSymbol[j]) then
            begin
            //добавляем в результат ее урл энкод
            Str:=Str+Enc[j];
            Found:=true;
            end;
        end;
If Not Found then Str:=Str+s[i]

    end;
    Result:=str;
end;

Последний раз редактировалось )Игнат(; 15.04.2011 в 22:29.
)Игнат( вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
utf-8 -> windows-1251 Lihosvet Visual C++ 10 03.09.2022 16:37
php перекодировка из utf-8 в windows-1251 world12_tk PHP 3 25.04.2010 22:55
UTF-8 в Windows-1251 - нужна функция motorway PHP 3 04.07.2009 15:28
Сохранять текст в нужной кодировке snake-as Microsoft Office Excel 5 28.10.2008 06:37