使用节点请求模块的UTF8字符编码
我有一个简单的应用程序,它使用jquery ajax请求发送表单数据到节点服务器,然后提交给第三方api节点js使用请求模块。
我遇到的问题是重音(和其他类似的)字符在到达第三方服务器时没有正确编码。 例如élogging为Ã
我相当确定这是与请求的设置,因为我绕过ajax调用时得到相同的结果。
以下是我正在使用的设置:
HTML:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
jquery ajax设置:
type : 'POST', url : '/api', data : formData, // A json object dataType : 'json', ContentType : 'text/html; charset=utf-8'
请求节点中的模块设置(Ajax post和请求发送之间的表单数据没有任何变化):
request.post({ url: "https://testurl.com/api/", form: formData, headers: {'Content-Type': 'application/json; charset=utf-8'} } ...
我已经阅读了各种SO解决scheme,但没有成功,所以任何build议不胜感激。
在研究字符编码之后,我发现问题是使用各种字符的多字节编码(一个快速谷歌会find一些关于这个主题的好SOpost)。
我认为Request不能自动处理这个问题,所以我使用了Request语法,并设法解决了这个问题。 这是我修改后的代码:
request( { url: 'https://testurl.com/api/', method: 'POST', json: true, headers: { 'content-type': 'application/json' }, body: formData }, function (error, response, body) { ... } );