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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2019, 15:53   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию заменить символы в строке токена на их коды

Здравствуйте.
Я понятия не имею, как это называется. По-этому не знаю как это гуглить.
Смысл вот в чем:
Когда мы принимаем токен от сервера, то перед тем как им воспользоваться, мы сначала должны заменить некоторые символы на их коды.
Таким образом, например, кавычки" превращаются в %22, а двоеточие превращается в %3A.
Можно загуглить эти коды и написать свою функцию для конвертирования. Но я не знаю, какие еще символы надо заменять.
На си-шарпе есть функция Uri.EscapeString(). А в делфи как это делается?
BLACK_RAIN вне форума Ответить с цитированием
Старый 02.11.2019, 20:12   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте
Код:
uses IdUri;

TIdURI.ParamsEncode(тут ваша строка);
или
Код:
uses
  IdURI;

..
begin
  S := TIdURI.URLEncode(str);
//
  S := TIdURI.URLDecode(str);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.11.2019, 11:12   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Спасибо. В тестовом проекте вроде работает. Сейчас перенесу это в основной проект и перестанет работать.
А каким образом слово "Общение" превращается в это?
Код:
%D0%9E%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5
Было 7 букв, а кодов получилось 14. Хотя у каждой буквы алфавита есть свой конкретный однобайтный код. Это вроде "ASCII-код" называется. Это можно увидеть в любом HEX-редакторе.

Тогда каким образом при обратной конвертации система понимает, что это именно 7 символов, а не 14?
BLACK_RAIN вне форума Ответить с цитированием
Старый 04.11.2019, 11:55   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

то экранированные кириллические символы в utf-8
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.11.2019, 11:57   #5
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Не ASCII, а UTF8 каждый байт кодируется в шестнадцатеричная система счисления и дописывается знак процента.
Про декодировании. UTF8 так устроена, что старшие биты байта кодируют длину символа.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 04.11.2019, 14:42   #6
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Не работает. Сейчас пришел токен от сервера и нифига не сработало.
Двоеточия и запятые не были заменены на коды. Возможно, в другой раз что-то еще не будет заменено. Но не на каждом же токене проверять. Там любые символы могут прийти.
что делать?
BLACK_RAIN вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заменить символы в строке на С? masha99 Помощь студентам 1 30.11.2018 11:29
Как декодировать HTML коды в соответствующие символы? Gdasar C++ Builder 0 04.08.2017 17:55
В исходном тексте все символы «,» заменить на слово «запятая» Mashaaaaa Паскаль, Turbo Pascal, PascalABC.NET 7 22.05.2012 14:12
Коды клавиш - буквы и дополнительные символы Фиалка001 Паскаль, Turbo Pascal, PascalABC.NET 13 02.05.2010 13:23
Коды клавиш - буквы и остальные символы, Паскаль Фиалка001 Помощь студентам 3 01.05.2010 21:01