Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express/Multer检测文本文件的7bit编码,当它';s ucs2。它们是同义词吗?_Node.js_Encoding_Multer - Fatal编程技术网

Node.js Express/Multer检测文本文件的7bit编码,当它';s ucs2。它们是同义词吗?

Node.js Express/Multer检测文本文件的7bit编码,当它';s ucs2。它们是同义词吗?,node.js,encoding,multer,Node.js,Encoding,Multer,在node.js应用程序中,我使用Multer中间件接收上传的文本文件。这是一个有效的ucs2编码文件。当我试图读取它时,我得到一个带有buffer.toString()的不可读字符串。它确实通过buffer.toString('ucs2')获得了正确的输出。但是Multer给出的编码是req.file.encoding==='7bit' 我的问题是:我能在“7bit”和“ucs2”之间建立一个直接的关系吗?,这样每当我从Multer得到“7bit”时,我就可以做一个缓冲区。toString('

在node.js应用程序中,我使用Multer中间件接收上传的文本文件。这是一个有效的ucs2编码文件。当我试图读取它时,我得到一个带有
buffer.toString()
的不可读字符串。它确实通过
buffer.toString('ucs2')
获得了正确的输出。但是Multer给出的编码是
req.file.encoding==='7bit'

我的问题是:我能在“7bit”和“ucs2”之间建立一个直接的关系吗?,这样每当我从Multer得到“7bit”时,我就可以做一个
缓冲区。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
无法理解的


谢谢。

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

我有一个部分答案:将UTF-8文件放在这个吞吐量中也会有Multer检测到“7bit”编码,所以这没有帮助。那么如何检测缓冲区的底层编码呢?mimetype设置为“应用程序八位字节流”;这没用。我通过“node chardet”插件得到了部分答案。我仍然需要协调的是该插件(UTF_32BE、UTF_16LE、windows_1251等)给出的代码类型与缓冲区类型(UTF8、UCS2、Ascii)使用的代码类型之间的差异,如图所示:对于
application/octet stream
,这表示8位二进制,因为它是八位字节流。实际内容是否为8位二进制是一个单独的问题,需要检查内容本身。