2015-08-14 4 views
1

Для URL-кодирования/декодирования было предложено использовать TNetEncoding от Delphi XE7 вверх.URL-кодировка символа одиночной кавычки?

Так в Delphi X Е8 я использую этот код, например:

uses 
    System.NetEncoding; 
... 
edtEncodedURL.Text := TNetEncoding.URL.Encode('SetFont(''Arial'',15)'); 

, который дает следующий результат:

SetFont('Arial'%2C15)

Однако это не кодирует одиночные кавычки, как вы можете видеть из приведенного выше примера.

Кроме того, в W3Schools.com HTML URL Encoding Reference, в «Попробуйте сами» раздел, строка SetFont('Arial',15) является URL-закодированы:

SetFont%28%27Arial%27%2C15%29

Так есть способ URL-кодирование также одиночные кавычки в Delphi X Е8?

+6

[RFC 1738] (https://www.ietf.org/rfc/rfc1738.txt) явно позволяет символы одиночной кавычки остаются незакодированными в URL-адресе, и поскольку эта спецификация - это то, на чем основывается блок преобразования Delphi, я думаю, что ответ № –

+1

'REST.Utils.URIEncode', похоже, выполняет эту работу: он получает' SetFont % 28% 27Arial% 27% 2C15% 29' из 'SetFont ('Arial', 15)'. – user1580348

+1

С другой стороны, 'TNetEncoding.URL.Decode' выполняет задание со всеми закодированными символами: он ПРАВИЛЬНО декодирует' SetFont% 28% 27Arial% 27% 2C15% 29' обратно в 'SetFont ('Arial', 15)'. – user1580348

ответ

4

Это похоже на работу с целью спросил в вопросе:

uses 
    System.NetEncoding, 
    REST.Utils; 

procedure TForm1.btnURLEncodeClick(Sender: TObject); 
begin 
    edtEncodedURL.Text := REST.Utils.URIEncode(edtOriginalURL.Text); 
end; 

procedure TForm1.btnURLDecodeClick(Sender: TObject); 
begin 
    edtDecodedURL.Text := TNetEncoding.URL.Decode(edtEncodedURL.Text); 
end; 

enter image description here

Смежные вопросы