Request: karakter beraksen? � � �

Dibuat pada 26 Nov 2011  ·  17Komentar  ·  Sumber: request/request

Hai!

Saya mencoba menghapus halaman web dengan karakter beraksen á é ó dll. Saya mencoba encoding: utf-8 , tetapi saya masih mendapatkan karakter ini di hasil.

 request.get({
      uri: url,
      encoding: 'utf-8'
      // ...

Komentar yang paling membantu

request({url: " www.example.com ", encoding: "latin1" }, function (error, response, html) {
console.log('kesalahan:', kesalahan);

Semua 17 komentar

Nah, apa pengkodean yang digunakan halaman itu? Anda tidak bisa begitu saja membuang parser utf8 di ISO-apa pun.

@thejh pengkodean halaman adalah iso-8859-1, saya juga sudah mencoba:

request.get({
    uri: url,
    encoding: 'iso-8859-1'
    // ...

dan saya mendapatkan:

Error: Unknown encoding

Tapi saya membaca masalah ini https://github.com/mikeal/request/issues/27 lalu http://nodejs.org/docs/v0.6.0/api/http.html#request.setEncoding

Set the encoding for the request body. Either 'utf8' or 'binary'. Defaults to null, which means that the 'data' event will emit a Buffer object..

Itu berhasil.

Lihatlah perpustakaan iconv.

Oke ... tapi apakah Anda tahu mengapa biner bekerja?

Karena hanya mengambil data buffer mentah. Juga, string masih bukan utf8, jadi jangan lakukan itu.

Tetapi dalam kasus ini, apa nilai yang tepat untuk penyandian?

Tidak ada pengkodean. Ambil sebagai buffer, lalu masukkan ke iconv.

kebingungan tampaknya lebih dari "biner" dan Buffer, yang juga biner.

"biner", sebagian besar, adalah pengkodean warisan dari node 0.1.x hari di mana kami mengkodekan semua biner ke string.

di node.js 0.2 kita mendapatkan objek Buffer, yang merupakan alokasi mentah dari memori di luar heap v8. objek bukan string, dan dapat menyimpan data biner mentah yang Anda dapatkan dari deskriptor file dan mengirimkannya ke deskriptor file lain tanpa mengalami konversi ke string.

dalam permintaan, Anda dapat mem-pipe() objek permintaan ke aliran mana pun dan semua buffer akan dikirim ke aliran tujuan. jika yang Anda lakukan hanyalah mengambil data biner dari permintaan http dan mengirim ke file, soket, atau respons http, Anda sebaiknya menggunakan pipe().

Bagaimana saya bisa menggunakan pipa dengan modul permintaan?

@mikeal Luar biasa!

Saya perlu menghapus lebih dari satu URL dalam permintaan HTTP yang sama (ini adalah aplikasi web) dan kemudian mengirim semua data ini ke respons.

Saya tidak bisa mengirimnya seperti itu:

request.get({
        uri: url1
}).pipe(res);

request.get({
        uri: ur2
}).pipe(res);

Apakah ada cara lain untuk melakukannya selain

var writeStream = fs.createWriteStream('./output');
request.get({
        uri: url1
}).pipe(writeStream);

request.get({
        uri: url2
}).pipe(writeStream);

// after all pipes finish I send writeStream content to the response

?

Aliran mana yang dapat saya gunakan dengan pipa?

Anda dapat menggunakan Aliran apa pun :)

Respons Server HTTP, Anda dapat menggunakannya sebagai badan objek permintaan lain, Anda dapat membuka aliran penulisan file. apa pun :)

request({url: " www.example.com ", encoding: "latin1" }, function (error, response, html) {
console.log('kesalahan:', kesalahan);

@vickygill69 Terima kasih, jawaban Anda menyelesaikan masalah saya

mengatur penyandian ke nol dan kemudian menggunakan buffer respons dengan iconv bekerja untuk saya. Terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat