Express/Multer 在 ucs2 时检测文本文件的 7 位编码。它们是同义词吗?

问题描述 投票:0回答:2

在 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
无法理解。

谢谢。

node.js encoding multer
2个回答
0
投票

没有“检测”,

encoding
值仅仅是客户端作为字段/文件的
Content-Transfer-Encoding
传递的值(如果有的话)。在大多数情况下,这个值可以被忽略,因为它不再被真正使用。您应该根据 mime 类型来确定内容编码。


0
投票

你可以用这个

file.originalname = Buffer.from(file.originalname, 'ascii').toString('utf8');

© www.soinside.com 2019 - 2024. All rights reserved.