在 node.js 应用程序中,我使用 Multer 中间件接收上传的文本文件。这是一个有效的 ucs2 编码文件。当我尝试阅读它时,我得到一个带有
buffer.toString()
的不可读字符串。它确实通过 buffer.toString('ucs2')
获得了正确的输出。但是Multer给出的编码是req.file.encoding === '7bit'
。
我的问题是:我可以在“7bit”和“ucs2”之间建立直接关系吗,这样每当我从 Multer 获得“7bit”时我就可以做一个
buffer.toString('ucs2')
?或者它也可能意味着其他编码?在后一种情况下,我如何确保获得文本文件的正确内容?
这是代码的一部分:
var getFile = function(req, res, next) {
var encoding = req.file.encoding;
fs.readFile(req.file.path, function (err, buffer) {
var data = buffer.toString(encoding);
}
}
确切的代码在这里不起作用,因为
encoding
给出“7bit”,toString
无法理解。
谢谢。
没有“检测”,
encoding
值仅仅是客户端作为字段/文件的Content-Transfer-Encoding
传递的值(如果有的话)。在大多数情况下,这个值可以被忽略,因为它不再被真正使用。您应该根据 mime 类型来确定内容编码。
你可以用这个
file.originalname = Buffer.from(file.originalname, 'ascii').toString('utf8');