[Решено]Преобразование Percent-encoding кодировки в UTF8.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

[Решено]Преобразование Percent-encoding кодировки в UTF8.

Сообщение GAMER » 15.04.2019 12:50:12

Есть строка вида "111%D1%80%d1%8022.png". На диске этот файл имеет название 111рр22.png (между цифрами рр - кириличные буквы).
Есть готовый инструмент перевода первой строки во вторую?
Последний раз редактировалось GAMER 15.04.2019 15:03:11, всего редактировалось 1 раз.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 572
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Преобразование JSON-подобной кодировки в UTF8.

Сообщение serbod » 15.04.2019 13:52:21

Это Percent-encoding, который не имеет отношения к JSON и обычно используется в URL.

В библиотеках для работы с HTTP есть кодеки:

Indy:
Код: Выделить всё
uses
  IdURI;

..
begin
  S := TIdURI.URLEncode(str);
//
  S := TIdURI.URLDecode(str);
end;


Synapse:
Код: Выделить всё
uses
  SynaCode;
..
begin
  s := EncodeUrl( str );
//
  s := DecodeUrl( str );
end;


Ну и более развернуто - https://stackoverflow.com/questions/776302/standard-url-encode-function
Аватара пользователя
serbod
постоялец
 
Сообщения: 400
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Преобразование JSON-подобной кодировки в UTF8.

Сообщение GAMER » 15.04.2019 15:02:22

Спасибо. Не знал, как этот термин называется, по аналогии с json подумал. Подправлю тему.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 572
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: [Решено]Преобразование Percent-encoding кодировки в UTF

Сообщение Ichthyander » 15.04.2019 18:03:52

Есть и нативная функции из либы fcl-web в модуле FPHTTPClient.
Код: Выделить всё
Function DecodeURLElement(Const S : String) : String;
Аватара пользователя
Ichthyander
постоялец
 
Сообщения: 490
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: [Решено]Преобразование Percent-encoding кодировки в UTF

Сообщение GAMER » 15.04.2019 18:31:39

Кстати, хоть и написал, что решено, но по факту, что-то с кодировками не так. Вывожу выхлоп в Caption формы, вместо кирилицы вопросительные знаки.

Добавлено спустя 2 минуты 45 секунд:
Ichthyander писал(а):Есть и нативная функции из либы fcl-web в модуле FPHTTPClient.
Код: Выделить всё
Function DecodeURLElement(Const S : String) : String;

Этот вариант, в отличии от Инди сработал как нужно.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 572
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: [Решено]Преобразование Percent-encoding кодировки в UTF

Сообщение Ichthyander » 15.04.2019 18:40:51

GAMER писал(а):Этот вариант, в отличии от Инди сработал как нужно.

Ну в случае инди и синапсе там тоже надо было decode функции заюзать, а не encode. А вообще, правильно выбрать нативную функцию при всех прочих равных условиях. Так что все ок
Аватара пользователя
Ichthyander
постоялец
 
Сообщения: 490
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: [Решено]Преобразование Percent-encoding кодировки в UTF

Сообщение GAMER » 15.04.2019 23:07:57

decode использовал. И отрабатывал он по идее правильно, просто символ непонятно в какую кодировку загонял.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 572
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: GAMER и гости: 1

Рейтинг@Mail.ru