nodejs上传文件,文件内容中文乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs上传文件,文件内容中文乱码相关的知识,希望对你有一定的参考价值。
服务器代码:
fs.readFile(req.files.thumbnail.path, 'utf-8', function (err, data)
console.log(data);
);
//输出的data中文是乱码,utf-8换成binary也是乱码
前端代码:
<form action="/upload" method="post" enctype="multipart/form-data" >
<input type="file" name="thumbnail">
<button type="submit" class="btn">提交</button>
</form>
求大神指点
一种是你前端规定只能上传utf8文本文件;
还有一种你知道前端大部分都是gbk, 后端做gbk到utf8的转化. (我那个时候nodejs似乎还没内置gbk解码器, 现在不知道了)追问
nodejs 现在也没有gbk。。。
var data = fs.readFileSync(req.files.thumbnail.path);
req.write(data);
这么写就能解决txt中文乱码问题。。。
但是新的问题出现了,如果是上传的图片或者其它文件到swift服务器,文件内容全是错误的
乱码问题一般都是环境问题.
比如你windows下的 gbk 文件到我mac平台就是乱码. 再移到windows平台, 就正常.
这并非是文件数据本身的问题...
没用过你说的swift服务器...为了保持一致性, 你可以算算crc32, 如果两文件一样, 那就证明一样.
但是我通过req.files.thumbnail.path查看服务器上的临时文件的内容却不是乱码。如果按你说的那服务器上的临时文件应该也包含乱码。
追答有些文件比较大时需要用压缩软件压缩传送,不然会出乱码
以上是关于nodejs上传文件,文件内容中文乱码的主要内容,如果未能解决你的问题,请参考以下文章
上传文件时并顺便将文件压缩时出现文件名乱码以及文件内容乱码解决方案
JAVA利用commons.net.ftp.FTPClient的storeFileStream方法TXT文件上传. 已经转码UTF-16LE,上传后内容乱码
记录一些遇见的bug——springBoot+minio文件上传为txt文件时,如果上传时编码格式不是utf-8,就会出现通过文件链接直接在windows窗口预览文件,文件内容乱码问题