Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
335 views
in Technique[技术] by (71.8m points)

formidable编码问题

前台上传到服务器的txt文件默认用了UTF-8的格式保存,文件内部的中文全部变了乱码,用GB 2312打开就正常了,但是用node进行fs.readFile操作就按UTF-8的形式读取了.查了一下fs好像不支持读取GB 2312编码的.
所以请问怎么在用户上传的时候以UTF-8的编码格式保存且不出现中文乱码呢?
这是刚上传的,UTF-8编码打开的文件内容:
image.png
这是切换GB 2312打开同一文件的内容:
image.png


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

一般保存的时候不会刻意去转文件的编码,只是直接写二进制流,因此你上传的时候是什么编码,保存的时候就是什么编码,你的例子也认证了这个观点。要解决这个问题无非以下几种方案:

  1. 客户端上传的时候就统一为utf8(不可靠)
  2. 服务端保存文件的时候统一转为utf8(可靠)
  3. 服务端保存文件时候不转utf8,读的时候根据测试文件前几个字节来确定用什么编码读取文件(不现实)

另外nodejs的库iconv-lite是支持GB2312的


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...