2015-09-24 19 views
9

Tôi làm cách nào để gửi truy vấn sau trong bộ ký tự win1251?Node.js: Gửi yêu cầu http trong win1251 charset

var getData = querystring.stringify({ 
     type: "тест", note: "тест1" 
    }), 
    options = { 
     host: config.host, 
     path: config.path + '?' + getData, 
     method: 'GET' 
    }; 

http.request(options, function (res) {...}).end(); 
+0

Bạn không thể gửi bất cứ điều gì "trong một charset nhất định". Bạn chỉ có thể mã hóa nó trong bộ ký tự đó (thành nhị phân) và sau đó gửi nó trong giao thức đã chọn (dưới dạng nhị phân!). Sau đó, máy chủ nhận có thể được cung cấp thông tin để giải mã nhị phân trong bộ ký tự chính xác thành một chuỗi. Bạn cần cung cấp thêm thông tin về các hạn chế nhất định và kết quả mong muốn của bạn. –

Trả lời

4

Tôi nghĩ đoạn này có thể giúp bạn

request({ 
uri: website_url, 
method: 'GET', 
encoding: 'binary' 
}, function (error, response, body) { 
    body = new Buffer(body, 'binary'); 
    conv = new iconv.Iconv('windows-1251', 'utf8'); 
    body = conv.convert(body).toString(); 
    } 
}); 

Cập nhật 1

OK, tôi nghĩ rằng tìm một cái gì đó hữu ích :)

Please check out this link

Bạn có thể sử dụng trên tiện ích như thế này

// Suppose gbkEncodeURIComponent function already exists, 
// it can encode string with `gbk` encoding 
querystring.stringify({ w: '中文', foo: 'bar' }, null, null, 
    { encodeURIComponent: win2unicode }) 
// returns 
'w=%D6%D0%CE%C4&foo=bar' 
+2

Tôi cần chuỗi truy vấn phải được mã hóa trong win1251 – ollazarev

2

Máy chủ có chấp nhận win1251 trong phần truy vấn của URL không?

What character set should I assume the encoded characters in a URL to be in?

Nhưng đây là một số SO câu trả lời phù hợp với câu hỏi của bạn:

Converting from Windows-1251 to UTF-8 in Node.js

nodejs http response encoding

nào giảm xuống để sử dụng một trong các thư viện, mà bạn cũng nên tìm trên npm.

https://github.com/bnoordhuis/node-iconv

hoặc

https://github.com/ashtuchkin/iconv-lite

Michael

Các vấn đề liên quan