仅当使用iisnode模块托管在IIS中时,nodejs特殊字符编码问题

问题描述

通过以下设置使用express和body-parser:

0

使用npm start运行nodejs服务器时,json主体中的特殊字符按预期编码为utf-8。一旦托管在IIS中,字符编码就会失败。唯一的区别是托管环境。为.net Globalization选项正确设置了带有'utf-8'设置的托管nodejs服务器应用程序的IIS站点,没有任何区别。仔细检查了web.config。可能会弄乱传入的请求数据吗?

json正文请求输出-当Nodejs托管在IIS中

nodejs output hosted in IIS

json正文请求输出-使用npm start直接运行服务器时:

nodejs output hosted in IIS

有关可能发生的情况的提示https://www.i18nqa.com/debug/bug-utf-8-latin1.html

有人知道在哪里看吗?

解决方法

发现了问题,可能很简单,只是愚蠢。无论如何我都会张贴它,因为我花了很多时间在错误的地方看。问题是分歧的。用于检查服务器上记录的请求的无用应用程序是使用ANSI字符集运行的。将其更改为UTF-8可以在屏幕上正确显示特殊字符。进一步接收该请求的API将特殊字符保存为“未知字符”-使我开始着眼于nodejs服务器上即将出现的问题。

绝对值得一提-进一步接收此请求的API是Facebook Conversions API-> https://developers.facebook.com/docs/marketing-api/conversions-api/using-the-api#verify。它不会将请求处理为“ application / json”,而是将“ application / x-www-form-urlencoded”与包含json对象以及Facebook参数“ format”设置为“ json”的表单数据请求一起处理。内容类型“ application / json”从技术上讲适用于此API调用,但特殊字符会用“未知字符问号”符号保存。在请求中设置标头中的“ Accept-Language”或Facebook“ locale”参数不适用于此API调用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...