首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ISO-8859-1编码发送请求

用ISO-8859-1编码发送请求
EN

Stack Overflow用户
提问于 2014-10-10 10:14:25
回答 1查看 1.3K关注 0票数 2

我有个小问题,我想从我们的SVN服务器(VisualSVN)请求的数据被编码为ISO8859-1,当我尝试用node.js https模块请求它们时,它没有正确地编码、等等。

我的问题是,如何告诉节点将数据请求为ISO-8859-1?

PS:我想坚持使用buildin组件,如果这是不可能的,我是开放的想法:)

编辑1

这是我用来获取文件的代码

代码语言:javascript
复制
exports.getSvnFile = function (path, auth, callback) {
    var options = {
        host: app.getSetting('svnserver'),
        method: 'GET',
        path: '/svn/' + encodeURIComponent(path).replace(/%2F/g, '/'),
        auth: tools.readFromSession(auth, 'username') + ':' + tools.readFromSession(auth, 'password'),
        headers: {
            'Accept-Charset': 'iso-8859-1'
        }
    }
    try {
        https.request(options, function (res) {
            var result = []
            try {
                console.log('STATUS: ' + res.statusCode)
                console.log('CONTENT-TYPE: ' + res.headers['content-type'])
                var data = ''
                res.on('data', function (chunk) {
                    data += chunk
                })
                res.on('end', function () {
                    callback(data, res.headers['content-type'])
                })
                res.on('error', function (err) {
                    console.error(err)
                })
            } catch (ex) {
                console.error(ex)
            }
        }).end()
    } catch (ex) {
        console.error(ex)
        callback([])
    }
}

res.end部件被调用时,我得到的数据已经被破坏了。我想也许Accept-Charset头可能会有帮助,但显然没有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-10 13:11:25

我可能有解决办法,至少对我来说是这样的:)

以下是上述调整后的代码:

代码语言:javascript
复制
exports.getSvnFile = function (path, auth, callback) {
    var options = {
        host: app.getSetting('svnserver'),
        method: 'GET',
        path: '/svn/' + encodeURIComponent(path).replace(/%2F/g, '/'),
        auth: tools.readFromSession(auth, 'username') + ':' + tools.readFromSession(auth, 'password')
    }
    try {
        https.request(options, function (res) {
            var result = []
            res.setEncoding('binary')
            try {
                console.log('STATUS: ' + res.statusCode)
                console.log('CONTENT-TYPE: ' + res.headers['content-type'])
                var data = ''
                res.on('data', function (chunk) {
                    data += chunk
                })
                res.on('end', function () {
                    callback(data, res.headers['content-type'])
                })
                res.on('error', function (err) {
                    console.error(err)
                })
            } catch (ex) {
                console.error(ex)
            }
        }).end()
    } catch (ex) {
        console.error(ex)
        callback([])
    }
}

它几乎是相同的,除了一件事,编码被设置为binary,然后它完美地工作:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26297062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档