Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 1 | .\" ************************************************************************** |
| 2 | .\" * _ _ ____ _ |
| 3 | .\" * Project ___| | | | _ \| | |
| 4 | .\" * / __| | | | |_) | | |
| 5 | .\" * | (__| |_| | _ <| |___ |
| 6 | .\" * \___|\___/|_| \_\_____| |
| 7 | .\" * |
Elliott Hughes | 82be86d | 2017-09-20 17:00:17 -0700 | [diff] [blame] | 8 | .\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 9 | .\" * |
| 10 | .\" * This software is licensed as described in the file COPYING, which |
| 11 | .\" * you should have received as part of this distribution. The terms |
Alex Deymo | 8f1a214 | 2016-06-28 14:49:26 -0700 | [diff] [blame] | 12 | .\" * are also available at https://curl.haxx.se/docs/copyright.html. |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 13 | .\" * |
| 14 | .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| 15 | .\" * copies of the Software, and permit persons to whom the Software is |
| 16 | .\" * furnished to do so, under the terms of the COPYING file. |
| 17 | .\" * |
| 18 | .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| 19 | .\" * KIND, either express or implied. |
| 20 | .\" * |
| 21 | .\" ************************************************************************** |
| 22 | .\" |
Elliott Hughes | 1ef06ba | 2018-05-30 15:43:58 -0700 | [diff] [blame^] | 23 | .TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.60.0" "libcurl Manual" |
Elliott Hughes | 82be86d | 2017-09-20 17:00:17 -0700 | [diff] [blame] | 24 | |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 25 | .SH NAME |
| 26 | curl_easy_escape - URL encodes the given string |
| 27 | .SH SYNOPSIS |
| 28 | .B #include <curl/curl.h> |
| 29 | .sp |
Alex Deymo | 8f1a214 | 2016-06-28 14:49:26 -0700 | [diff] [blame] | 30 | .BI "char *curl_easy_escape( CURL *" curl ", const char *" string |
| 31 | .BI ", int "length " );" |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 32 | .ad |
| 33 | .SH DESCRIPTION |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 34 | This function converts the given input \fIstring\fP to a URL encoded string |
| 35 | and returns that as a new allocated string. All input characters that are not |
| 36 | a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" |
| 37 | version (%NN where NN is a two-digit hexadecimal number). |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 38 | |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 39 | If \fIlength\fP is set to 0 (zero), \fIcurl_easy_escape(3)\fP uses strlen() on |
| 40 | the input \fIstring\fP to find out the size. |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 41 | |
| 42 | You must \fIcurl_free(3)\fP the returned string when you're done with it. |
Elliott Hughes | 82be86d | 2017-09-20 17:00:17 -0700 | [diff] [blame] | 43 | .SH ENCODING |
| 44 | libcurl is typically not aware of, nor does it care about, character |
| 45 | encodings. \fIcurl_easy_escape(3)\fP encodes the data byte-by-byte into the |
| 46 | URL encoded version without knowledge or care for what particular character |
| 47 | encoding the application or the receiving server may assume that the data |
| 48 | uses. |
| 49 | |
| 50 | The caller of \fIcurl_easy_escape(3)\fP must make sure that the data passed in |
| 51 | to the function is encoded correctly. |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 52 | .SH AVAILABILITY |
| 53 | Added in 7.15.4 and replaces the old \fIcurl_escape(3)\fP function. |
| 54 | .SH RETURN VALUE |
| 55 | A pointer to a zero terminated string or NULL if it failed. |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 56 | .SH EXAMPLE |
| 57 | .nf |
| 58 | CURL *curl = curl_easy_init(); |
| 59 | if(curl) { |
| 60 | char *output = curl_easy_escape(curl, "data to convert", 15); |
| 61 | if(output) { |
Alex Deymo | 8f1a214 | 2016-06-28 14:49:26 -0700 | [diff] [blame] | 62 | printf("Encoded: %s\\n", output); |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 63 | curl_free(output); |
| 64 | } |
Alex Deymo | 8f1a214 | 2016-06-28 14:49:26 -0700 | [diff] [blame] | 65 | } |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 66 | .fi |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 67 | .SH "SEE ALSO" |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 68 | .BR curl_easy_unescape "(3), " curl_free "(3), " RFC 3986 |