我有个小问题,我想从我们的SVN服务器(VisualSVN)请求的数据被编码为ISO8859-1,当我尝试用node.js https模块请求它们时,它没有正确地编码、等等。
我的问题是,如何告诉节点将数据请求为ISO-8859-1?
PS:我想坚持使用buildin组件,如果这是不可能的,我是开放的想法:)
编辑1
这是我用来获取文件的代码
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头可能会有帮助,但显然没有帮助。
发布于 2014-10-10 13:11:25
我可能有解决办法,至少对我来说是这样的:)
以下是上述调整后的代码:
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,然后它完美地工作:)
https://stackoverflow.com/questions/26297062
复制相似问题