1--- 2c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 3SPDX-License-Identifier: curl 4Title: CURLOPT_CONV_FROM_UTF8_FUNCTION 5Section: 3 6Source: libcurl 7Protocol: 8 - All 9See-also: 10 - CURLOPT_CONV_FROM_NETWORK_FUNCTION (3) 11 - CURLOPT_CONV_TO_NETWORK_FUNCTION (3) 12Added-in: 7.15.4 13--- 14 15# NAME 16 17CURLOPT_CONV_FROM_UTF8_FUNCTION - convert data from UTF8 to host encoding 18 19# SYNOPSIS 20 21~~~c 22#include <curl/curl.h> 23 24CURLcode conv_callback(char *ptr, size_t length); 25 26CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_UTF8_FUNCTION, 27 conv_callback); 28~~~ 29 30# DESCRIPTION 31 32Pass a pointer to your callback function, which should match the prototype 33shown above. 34 35Applies to non-ASCII platforms. curl_version_info(3) returns the 36CURL_VERSION_CONV feature bit set if this option is provided. 37 38The data to be converted is in a buffer pointed to by the *ptr* parameter. 39The amount of data to convert is indicated by the *length* parameter. The 40converted data overlays the input data in the buffer pointed to by the ptr 41parameter. *CURLE_OK* must be returned upon successful conversion. A 42CURLcode return value defined by curl.h, such as *CURLE_CONV_FAILED*, 43should be returned if an error was encountered. 44 45CURLOPT_CONV_FROM_UTF8_FUNCTION(3) converts to host encoding from UTF8 46encoding. It is required only for SSL processing. 47 48If you set a callback pointer to NULL, or do not set it at all, the built-in 49libcurl iconv functions are used. If HAVE_ICONV was not defined when libcurl 50was built, and no callback has been established, the conversion returns the 51CURLE_CONV_REQD error code. 52 53If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. 54For example: 55~~~c 56 #define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 57~~~ 58 59The iconv code in libcurl defaults the network and UTF8 codeset names as 60follows: 61~~~c 62#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 63 64#define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8" 65~~~ 66 67You need to override these definitions if they are different on your system. 68 69# DEFAULT 70 71NULL 72 73# %PROTOCOLS% 74 75# EXAMPLE 76 77~~~c 78static CURLcode my_conv_from_utf8_to_ebcdic(char *buffer, size_t length) 79{ 80 int rc = 0; 81 /* in-place convert 'buffer' from UTF-8 to EBCDIC */ 82 if(rc == 0) { 83 /* success */ 84 return CURLE_OK; 85 } 86 else { 87 return CURLE_CONV_FAILED; 88 } 89} 90 91int main(void) 92{ 93 CURL *curl = curl_easy_init(); 94 curl_easy_setopt(curl, CURLOPT_CONV_FROM_UTF8_FUNCTION, 95 my_conv_from_utf8_to_ebcdic); 96} 97~~~ 98 99# DEPRECATED 100 101Not available and deprecated since 7.82.0. 102 103Available only if **CURL_DOES_CONVERSIONS** was defined when libcurl was 104built. 105 106# %AVAILABILITY% 107 108# RETURN VALUE 109 110Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. 111