@@ -4,7 +4,8 @@ var fs = require('fs'),
44 Socket = require ( 'net' ) . Socket ,
55 EventEmitter = require ( 'events' ) . EventEmitter ,
66 inherits = require ( 'util' ) . inherits ,
7- inspect = require ( 'util' ) . inspect ;
7+ inspect = require ( 'util' ) . inspect ,
8+ StringDecoder = require ( 'string_decoder' ) . StringDecoder ;
89
910var Parser = require ( './parser' ) ;
1011var XRegExp = require ( 'xregexp' ) . XRegExp ;
@@ -432,13 +433,16 @@ FTP.prototype.list = function(path, zcomp, cb) {
432433 }
433434
434435 var sockerr , done = false , replies = 0 , entries , buffer = '' , source = sock ;
436+ var decoder = new StringDecoder ( 'utf8' ) ;
435437
436438 if ( zcomp ) {
437439 source = zlib . createInflate ( ) ;
438440 sock . pipe ( source ) ;
439441 }
440442
441- source . on ( 'data' , function ( chunk ) { buffer += chunk . toString ( 'binary' ) ; } ) ;
443+ source . on ( 'data' , function ( chunk ) {
444+ buffer += decoder . write ( chunk ) ;
445+ } ) ;
442446 source . once ( 'error' , function ( err ) {
443447 if ( ! sock . aborting )
444448 sockerr = err ;
@@ -447,6 +451,10 @@ FTP.prototype.list = function(path, zcomp, cb) {
447451 source . once ( 'close' , ondone ) ;
448452
449453 function ondone ( ) {
454+ if ( decoder ) {
455+ buffer += decoder . end ( ) ;
456+ decoder = null ;
457+ }
450458 done = true ;
451459 final ( ) ;
452460 }
0 commit comments