2013-09-24 13 views
0

노드를 사용하여 매우 간단한 자바 스크립트가 있습니다. 에 스크립트의 목적은 다음과 같습니다 Restify : 외부 URL 콘텐츠 검색 (ISO-8859-1) 요청 클라이언트 (UTF-8)로 돌아 가기

  • 이 URL에 대한 처리기를 추가

    • 를 열고 수신 대기 소켓/HTTP 기능 시험/검사가 요청되면
    • 다른 외부 웹 사이트에있는 다른 URL이어야 GET 가져 왔습니다. 이 웹 사이트는 ISO-8859-1 데이터는 외부 웹 사이트에서 반환
    • 는 JSON 구조로 포장 지금까지 내가 만든 UTF-8

    로 인코딩 요청 클라이언트에 반환해야

  • 로 인코딩 다음 코드는

    var Buffer = require('buffer').Buffer; 
    var iconv = require('iconv-lite'); 
    var urllib = require('url'); 
    var restify = require('restify'); 
    var server = restify.createServer(); 
    
    server.use(restify.bodyParser()); 
    server.get('/test', test); 
    server.listen(8080, function() { 
        console.log('%s listening at %s', server.name, server.url); 
    }); 
    
    function test(req, res, next) { 
        console.log('TEST'); 
    
        var httpClient = restify.createStringClient({ url: "http://dl.dropboxusercontent.com" }); 
        httpClient.get("/u/815962/iso-8859-1.html", function(cerr, creq, cres, cdata) { 
         cdata = iconv.decode(cdata, 'iso-8859-1'); 
    
         res.send(200, {"Data": cdata}); 
        });  
    } 
    

    위의 코드에서 사용 된 테스트 문서를 설정했습니다. 테스트 문서는 ISO-8859-1 인코딩으로되어 있으며 그 안에 "ÅÄÖåäö"라는 국가 문자가 있습니다. 클라이언트에게 반환 될 때, UTF-8과 같이 읽으면 "ý receive" "을받습니다.

    답변

    0

    정말로 이것은 Restify의 버그 인 것 같습니다. 다음의 예는 Restify 및 요청 LIB 사용하여 서로 다른 결과를 보여줍니다 : 나는이 문제를 찾기 위해 노력 GitHub의에 Restify의 코드를 탐색 한

    var request = require('request');            
    var iconv = require('iconv');             
    var restify = require('restify'); 
    var ic = new iconv.Iconv('iso-8859-1', 'utf-8');        
    
    request.get({ url: 'http://dl.dropboxusercontent.com/u/815962/iso-8859-1.html', encoding: null, }, function(err, res, body) {  
        var buf = ic.convert(body);             
        var utf8String = buf.toString('utf-8'); 
        console.log(utf8String); 
    }); 
    
    var httpClient = restify.createStringClient({ url: "http://dl.dropboxusercontent.com" }); 
    httpClient.get("/u/815962/iso-8859-1.html", function(cerr, creq, cres, cdata) { 
        var buf = ic.convert(cdata);             
        var utf8String = buf.toString('utf-8'); 
        console.log(utf8String); 
    });  
    

    을,하지만 난

    을 할 수 없습니다