Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过libcurl传输从libxml2读取的字符串?_C_Linux_Http_Libcurl_Libxml2 - Fatal编程技术网

如何通过libcurl传输从libxml2读取的字符串?

如何通过libcurl传输从libxml2读取的字符串?,c,linux,http,libcurl,libxml2,C,Linux,Http,Libcurl,Libxml2,我需要向服务器发送http post请求。我选择使用libcurl函数。请求数据必须类似于xml格式。因此,我使用libxml2将字符串转换为xml,然后将xml文件读入buf,将buf传递给libcurl,完成post请求。 由libxml2以in-encoding-utf8创建的xml文件,当我将数据发送到libcurl函数时,它看起来很正常。但是我把包拿到服务器上,发现英文字符都是正常的,但是我的母语“中文”被替换成了“?”,这真的让我很困惑。 我现在应该怎么做,我可以设置libcurl函

我需要向服务器发送http post请求。我选择使用libcurl函数。请求数据必须类似于xml格式。因此,我使用libxml2将字符串转换为xml,然后将xml文件读入buf,将buf传递给libcurl,完成post请求。 由libxml2以in-encoding-utf8创建的xml文件,当我将数据发送到libcurl函数时,它看起来很正常。但是我把包拿到服务器上,发现英文字符都是正常的,但是我的母语“中文”被替换成了“?”,这真的让我很困惑。 我现在应该怎么做,我可以设置libcurl函数来传输utf-8字符串吗? 我的测试环境是linux c。 这是由libxml2创建的我的xml:


±\u该标志的文档说明“您必须确保数据的格式符合您希望服务器接收数据的方式。libcurl不会为您转换或编码数据。大多数web服务器将假定此数据为url编码。”请尝试在您的数据上使用,并将其用作您请求的post数据。

这是一个编码问题,明显地请更详细地描述(一些源代码会更好)你到底在做什么。问题通常是由一些小问题造成的,比如字符串文本或类似文本之前缺少前缀
u
。在问题中,我描述它:@AlfeCould是您的编译器已经转换了非拉丁字符。请在0..3中为
i
定义
licenseNo\u text
后添加一些调试输出,如
printf(“%02x”,licenseNo\u text[i])
。这应该告诉我们汉字的编码方式
sizeof(licenseNo_text[0])
根据标准定义应该是1,但谁也不知道,所以您也可以给出这个值。谢谢您的建议。刚才,我在我的程序中尝试了这个函数。但是当我编译它的时候。它给了我一个错误::未定义对“curl\u easy\u escape”的引用。这是我的makefile:target:gcc-I/usr/local/include-o http post http post.c-lcurlnefined引用到curl\u easy\u escape?你使用的是libcurl的当前版本吗?啊,我明白了。可用性是“在7.15.4中添加并替换了旧功能。”是的,我从网站下载了libcurl库。这是新版本。但在我的linux操作系统中,它有一个旧的。它没有旋度,容易逃逸的功能。我怎样才能买到新的?在makefile中,-lcurl似乎工作不好。