最近在使用c語言進行json數據傳輸時,遇到了一個奇怪的問題,就是在傳輸過程中會出現%3c d這個奇怪的字符,這給我造成了很大的困擾,下面是我的解決方案。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> int main(){ CURL *curl; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if(curl) { char *json = "{\"name\":\"小明\"}"; char *data = curl_easy_escape(curl, json, strlen(json)); char *url = "http://example.com/api"; char *params = calloc(strlen(url) + strlen(data) + 3, sizeof(char)); sprintf(params, "%s?data=%s", url, data); curl_free(data); curl_easy_setopt(curl, CURLOPT_URL, params); res = curl_easy_perform(curl); curl_easy_cleanup(curl); free(params); } curl_global_cleanup(); return 0; }
這里我們使用了curl_easy_escape函數對json數據進行轉義,然后拼接到url中發送給服務器端,這樣就可以避免出現%3c d這個字符了。