我正在使用一個小庫節點爬蟲(https://github.com/sylvinus/node-crawler),它允許我也下載二進制文件。問題是,它不會響應的緩衝區轉換爲字符串,在這一行https://github.com/sylvinus/node-crawler/blob/6822559cd2b49aa69e39ff07d61ca92b76fe03ca/lib/crawler.js#L434節點二進制Buffer.toString(),轉換回緩衝區
response.body = response.body.toString(); //response.body was a Buffer
我在自己的回調response
對象得到,我試圖把它用正確的值轉換回緩衝區。
原始
<Buffer ff d8 ff e1 00 18 45 78 69 66 00 00 49 49 2a 00 08 00 00 00 00 00 00 00 00 00 00 00 ff ec 00 11 44 75 63 6b 79 00 01 00 04 00 00 00 4b 00 00 ff e1 03 ... >
我嘗試 '解碼' 它下面,但沒有運氣(它調用的ToString()前):
Buffer(response.body, 'binary')
<Buffer fd fd fd fd 00 18 45 78 69 66 00 00 49 49 2a 00 08 00 00 00 00 00 00 00 00 00 00 00 fd fd 00 11 44 75 63 6b 79 00 01 00 04 00 00 00 4b 00 00 fd fd 03 ... >
new Buffer(response.body)
<Buffer ef bf bd ef bf bd ef bf bd ef bf bd 00 18 45 78 69 66 00 00 49 49 2a 00 08 00 00 00 00 00 00 00 00 00 00 00 ef bf bd ef bf bd 00 11 44 75 63 6b 79 00 ... >
所以我的問題是:如何從該字符串表示中找回正確的原始緩衝區?
不管是庫還是將緩衝區轉換爲字符串,我都想提到'toString()'默認爲utf8編碼。所以假設你有正確的字符串表示形式,'新的緩衝區(yourString,'utf8')'應該是正確的,而不是'二進制' – johnnycrab
@johnnycrab不幸的是不起作用。 –