问题与nodeJS编码

所以我面临着一个我无法解决的情况。

这是我的代码:

var fs = require('fs'); var path = require('path'); module.exports = { showTree: function (req, res) { var _p; if (req.query.entity) { _p = path.resolve(__dirname, '../../uploads/Segmentation', req.query.entity); } else { _p = path.resolve(__dirname, '../../uploads/Segmentation', 'Default'); } if (req.query.id == 1) { processReq(_p, res); } else { if (req.query.id) { _p = req.query.id; processReq(_p, res); } else { res.json(['No valid data found']); } } function processReq(_p, res) { var resp = []; var encoding = 'utf8'; fs.readdir(_p,encoding, function(err, list) { if (typeof list !== 'undefined'){ for (var i = list.length - 1; i >= 0; i--) { resp.push(processNode(_p, list[i])); } res.json(resp); } else { res.json(null); } }); } function processNode(_p, f) { var s = fs.statSync(path.join(_p, f)); return { "id": path.join(_p, f), "text": f, "icon" : s.isDirectory() ? 'jstree-custom-folder' : 'jstree-custom-file', "state": { "opened": false, "disabled": false, "selected": false }, "li_attr": { "base": path.join(_p, f), "isLeaf": !s.isDirectory() }, "children": s.isDirectory() }; } } }; 

问题在于一个名为“Posteàsouder”的存储库。 如果我console.log(列表[我])我得到“邮政一个苏玉”。 我该如何解决这个编码问题?

你应该指定编码选项readdir()

 var encoding = 'utf8'; // or the encoding you expect... fs.readdir(_p, {encoding: encoding}, function(err, list) { ... }); 

请注意'utf8'编码是默认的,所以你可能会得到一个不同的编码…

另见文件 。

第二个注意:服务器端(node.js)代码在这里SO代码片段不工作“原样”… 🙂