声明

  1. CURLcode conv_callback(char *ptr, size_t length);
  2. CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_UTF8_FUNCTION,
  3. conv_callback);

概要

把数据从UTF8编码转换成本机编码。

详情

传入一个指向你的回调函数的指针,该函数应该符合上面显示的原型。

该选项应用于非ASCII平台。如果提供了这个选项,curl_version_info会返回CURL_VERSION_CONV特性位。

被转换的数据位于由ptr参数指向的的缓冲区中。转换的数据大小由length参数指定。转换后的数据会覆盖由ptr参数指向的缓冲区中的输入数据。当转换成功的时候,必须返回CURLE_OK。当发生错误时,应该返回一个在curl.h中定义的CURLcode返回值,例如CURLE_CONV_FAILED

CURLOPT_CONV_FROM_UTF8_FUNCTION从UTF8编码转换成本机编码。它只在SSL处理过程中需要用到。

如果你设置回调指针为NULL,或者根本不设置它,那么内置的libcurl iconv函数会被使用。如果在构建libcurl的时候没有定义HAVE_ICONV,而且没有设置回调,转换的时候会返回CURLE_CONV_REQD错误码。

如果定义了HAVE_ICONV,那么一定要同时定义CURL_ICONV_CODESET_OF_HOST。例如:

  1. #define CURL_ICONV_CODESET_OF_HOST "IBM-1047"

libcurl的iconv代码会像下面那样设置默认的网络和UTF8编码集的名称:

  1. #define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
  2. #define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"

如果它们在你的系统上不一样,你需要重写这些定义。

备注

默认值

无。

适用协议

基于TLS的协议。

可用性

只在构建libcurl时定义了CURL_DOES_CONVERSIONS的情况下可用。

返回值

如果支持该选项,返回CURLE_OK;否则返回CURLE_UNKNOWN_OPTION