我住在韩国
韩国网站没有标准化utf-8
有时我会收到“euc-kr”字符串
所以它发生了错误
当我使用In express 3.x.它自动生成utf-8
app.use(express.static(__dirname));
app.use(connect.json());
app.use(connect.urlencoded('utf-8')); <-- this
但现在我使用快递4.x它不是那个
app.use(express.static(path.join(__dirname)));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
所以我不知道如何输入urlencoded'utf-8'选项
如何知道在快递4.x中输入utf-8选项?
app-0 UnsupportedMediaTypeError: unsupported charset "EUC-KR"
app-0 at urlencodedParser (/home/node/Node/node_modules/body-parser/lib/types/urlencoded.js:102:12)
app-0 at Layer.handle [as handle_request] (/home/node/Node/node_modules/express/lib/router/layer.js:95:5)
...
答案 0 :(得分:1)
一般情况下,默认情况下它应该是utf-8,但在这种情况下请尝试:
app.use(bodyParser.text({defaultCharset: 'utf-8'}));
无论如何你要解析JSON,看起来如此,'utf-8'无法解决你的问题因为bodyParser无法正常使用这种数据格式。例如,如果您尝试使用request.body获取POST数据,则可以找到类似的内容
{'{data1':'stringExample','data2':123}':''} 或者有时候是烦恼 未定义
在这里阅读一个很好的解释enter link description here
尝试改变这一点:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
使用:
var jsonParser = bodyParser.json();
var urlencodedParser = bodyParser.urlencoded({ extended: false });
var urlNotEncodedParser = function(req, res, next)
{
rawBody = '';
req.on('data', function(chunk) {
rawBody += chunk;
if (rawBody.length > 1e6) requereqst.connection.destroy();
});
req.on('end', function() {
req.rawBody = JSON.parse(rawBody);
next();
});
};
并在需要时使用它们:
//without body-parser
app.post('/json', urlNotEncodedParser, requestJsonCTRL);
//with body-parser
app.post('/notjson', urlencodedParser, requestCTRL);
//or catching all other request with routes
app.use('/', urlencodedParser, routes);
通过这种方式,您可以在没有body-parser的情况下将Json数据作为原始数据(因为它已发送)捕获,然后使用本机json解析器进行解析。 详细了解here以及是否需要使用GET网址here Byee