2012-01-01 29 views
6

Tôi cần phải chuyển đổi chuỗi từ Windows-1251 sang UTF-8.Chuyển đổi từ Windows-1251 sang UTF-8 trong Node.js

Tôi cố gắng để làm điều này với iconv, nhưng tất cả tôi nhận được là một cái gì đó như thế này:

пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ

var iconv = new Iconv('windows-1251', 'utf-8') 
title = iconv.convert(title).toString('utf-8') 
+0

thể trùng lặp của [nodejs http mã hóa phản ứng] (http://stackoverflow.com/questions/5135450/nodejs-http-response-encoding) –

Trả lời

2

Nếu tôi đọc các tài liệu một cách chính xác, bạn không cần phải gọi toString trên kết quả. .convert phải đủ: https://github.com/bnoordhuis/node-iconv

var iconv = new Iconv('windows-1251', 'utf-8') 
title = iconv.convert(title) 
12

Đây là giải pháp làm việc cho vấn đề của bạn. Bạn phải sử dụng bộ đệm và chuyển đổi chuỗi của bạn thành nhị phân đầu tiê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(); 
    } 
}); 
+0

1 giải pháp của bạn làm việc cho tôi. Cảm ơn. Nhưng thay vì 'iconv' tôi đã sử dụng [windows1251] (https://www.npmjs.com/package/windows-1251) – Azevedo

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