Haruyuki Mohri

毛利春幸のブログです。

URLエンコード TURLEncoding

System.NetEncoding.TURLEncoding

C++BuilderでURL エンコード 形式でデータをエンコードおよびデコードするメソッドを提供

TURLEncoding は、スペース(プラス記号 + として)と、次の予約された URL エンコード文字のみをサポートします

;:&=+,/?%#[]。 

TURLEncoding は、プラス記号(スペースとして)と、どんなパーセント エンコード文字(%2A や %41 など)のデコードもサポートします。

//Encode('A0*''()@$! ;:&=+,/?%#[]"') は、'A0*''()@$!+%3B%3A%26%3D%2B%2C%2F%3F%25%23%5B%5D%22' //を返します。
//Decode('%41%30%2A%27%28%29%40%24%21%20%3B%3A%26%3D%2B%2C%2F%3F%25%23%5B%5D%22') は、'A0*''()@$! ;:&=+,/?%#[]"' //を返します。

inline static const String get_URLEncode(const String value_, ...)
{
    std::unique_ptr<TURLEncoding> URLEncoding_{std::make_unique<TURLEncoding>()};
    return URLEncoding_->Encode(value_);
}
UnicodeString s2_ = get_URLEncode("A0*''()@$! ;:&=+,/?%#[]");

Decode および DecodeStringToBytes に対する文字列は、UTF8 でエンコードされていなければなりません。
f:id:mojeld:20170624130159p:plain

REST.Utils.URIEncode

REST.Utilsの中にもURIEncodeと言うのがありますが間違いやすいので注意