我正在將數據從C++客戶端傳輸到nodejs服務器。C++中的URL編碼和nodejs中的解碼
我使用zlib首先壓縮字符串deflate,然後使用curl_easy_escape對url進行壓縮字符串編碼。
std::string bin(o);
curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, bin.size());
curl_easy_setopt(handle, CURLOPT_POSTFIELDS, bin.data());
curl_easy_perform(handle);
當我運行它,我得到的輸出:
std::string s = zlib_compress(temp.str());
std::cout << s <<"\n";
CURL *handle = curl_easy_init();
char* o = curl_easy_escape(handle, s.data(), s.size());
std::cout << o <<"\n";
然後我把它用發送
x??с??Ҵ4?
x%DA%D3%D1%81%80%E2%92%D2%B44%1D%03%00%1BW%03%E5
現在,我收到我的NodeJS服務器上的第二編碼字符串它是。 我現在嘗試解碼它。
var x = req.params;
for (var key in req.body)
{
console.log(key);
var x = unescape(key);
var buffer = new Buffer(x);
console.log(x);
zlib.inflate(buffer, function(err, buffer) {
console.log(err+" here");
});
}
,輸出:
x%DA%D3%D1%81%80%E2%92%D2%B44%1D%03%00%1BW%03%E5
xÚÓÑâÒ´4å
Error: incorrect header check here
這裏有什麼問題嗎?我如何調試它?
我不知道我是否應該接受你的回答,因爲: 1.是的,問題是由於編碼。 2.但它不應該是utf8,因爲任何壓縮數據都是二進制的。 所以,是的,編碼中的「二進制」解決了這個問題。 –
好的,我編輯了你的答案。謝謝。 –
如果你發現這個問題很有見地,請你注意它嗎? –