2024-01-17 18:32:44 +08:00
|
|
|
---
|
2024-02-28 18:28:10 +08:00
|
|
|
c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
2024-01-17 18:32:44 +08:00
|
|
|
SPDX-License-Identifier: curl
|
|
|
|
Title: curl_easy_escape
|
|
|
|
Section: 3
|
|
|
|
Source: libcurl
|
|
|
|
See-also:
|
|
|
|
- curl_easy_unescape (3)
|
2024-07-01 16:11:39 +08:00
|
|
|
- curl_url_set (3)
|
|
|
|
- curl_url_get (3)
|
2024-03-21 18:50:20 +08:00
|
|
|
Protocol:
|
2024-03-23 06:48:54 +08:00
|
|
|
- All
|
2024-07-18 06:51:50 +08:00
|
|
|
Added-in: 7.15.4
|
2024-01-17 18:32:44 +08:00
|
|
|
---
|
|
|
|
|
|
|
|
# NAME
|
|
|
|
|
2024-06-30 06:08:06 +08:00
|
|
|
curl_easy_escape - URL encode a string
|
2024-01-17 18:32:44 +08:00
|
|
|
|
|
|
|
# SYNOPSIS
|
|
|
|
|
|
|
|
~~~c
|
|
|
|
#include <curl/curl.h>
|
|
|
|
|
|
|
|
char *curl_easy_escape(CURL *curl, const char *string, int length);
|
|
|
|
~~~
|
|
|
|
|
|
|
|
# DESCRIPTION
|
|
|
|
|
2024-07-23 17:03:15 +08:00
|
|
|
This function converts the given input *string* to a URL encoded string and
|
|
|
|
returns that as a new allocated string. All input characters that are not a-z,
|
|
|
|
A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version
|
|
|
|
(**%NN** where **NN** is a two-digit hexadecimal number).
|
2024-01-17 18:32:44 +08:00
|
|
|
|
2024-07-23 17:03:15 +08:00
|
|
|
If *length* is set to 0 (zero), curl_easy_escape(3) uses strlen() on the input
|
|
|
|
*string* to find out the size. This function does not accept input strings
|
|
|
|
longer than **CURL_MAX_INPUT_LENGTH** (8 MB).
|
2024-01-17 18:32:44 +08:00
|
|
|
|
|
|
|
You must curl_free(3) the returned string when you are done with it.
|
|
|
|
|
|
|
|
# ENCODING
|
|
|
|
|
|
|
|
libcurl is typically not aware of, nor does it care about, character
|
|
|
|
encodings. curl_easy_escape(3) encodes the data byte-by-byte into the
|
|
|
|
URL encoded version without knowledge or care for what particular character
|
|
|
|
encoding the application or the receiving server may assume that the data
|
|
|
|
uses.
|
|
|
|
|
|
|
|
The caller of curl_easy_escape(3) must make sure that the data passed in
|
|
|
|
to the function is encoded correctly.
|
|
|
|
|
2024-07-01 16:11:39 +08:00
|
|
|
# URLs
|
|
|
|
|
|
|
|
URLs are by definition *URL encoded*. To create a proper URL from a set of
|
|
|
|
components that may not be URL encoded already, you cannot just URL encode the
|
|
|
|
entire URL string with curl_easy_escape(3), because it then also converts
|
|
|
|
colons, slashes and other symbols that you probably want untouched.
|
|
|
|
|
|
|
|
To create a proper URL from strings that are not already URL encoded, we
|
|
|
|
recommend using libcurl's URL API: set the pieces with curl_url_set(3) and get
|
|
|
|
the final correct URL with curl_url_get(3).
|
|
|
|
|
2024-07-19 07:06:06 +08:00
|
|
|
# %PROTOCOLS%
|
|
|
|
|
2024-01-17 18:32:44 +08:00
|
|
|
# EXAMPLE
|
|
|
|
|
|
|
|
~~~c
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
CURL *curl = curl_easy_init();
|
|
|
|
if(curl) {
|
|
|
|
char *output = curl_easy_escape(curl, "data to convert", 15);
|
|
|
|
if(output) {
|
|
|
|
printf("Encoded: %s\n", output);
|
|
|
|
curl_free(output);
|
|
|
|
}
|
|
|
|
curl_easy_cleanup(curl);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
~~~
|
|
|
|
|
2024-07-23 17:03:15 +08:00
|
|
|
# HISTORY
|
|
|
|
|
|
|
|
Since 7.82.0, the **curl** parameter is ignored. Prior to that there was
|
|
|
|
per-handle character conversion support for some old operating systems such as
|
|
|
|
TPF, but it was otherwise ignored.
|
|
|
|
|
2024-07-19 07:06:06 +08:00
|
|
|
# %AVAILABILITY%
|
|
|
|
|
2024-01-17 18:32:44 +08:00
|
|
|
# RETURN VALUE
|
|
|
|
|
|
|
|
A pointer to a null-terminated string or NULL if it failed.
|