Javascript 发布嵌套对象会破坏NodeJS后端中的编码
我无法将包含特殊字符(如Javascript 发布嵌套对象会破坏NodeJS后端中的编码,javascript,node.js,express,utf-8,Javascript,Node.js,Express,Utf 8,我无法将包含特殊字符(如`)的JSON数据发送到我的Node Express服务器 我之前发过帖子,但我认为我处理问题的方法是错误的 问题: 当我使用HTTP客户端提交JSON表单数据时,我的req.bodyhtmlifes特殊字符: //发送嵌套的JSON.stringized对象 const response1=等待获取( `${baseUrl}/chhands/${granthState.lastChhand.id}/pauris`, { 方法:“POST”, 标题:{'Content-T
`
)的JSON数据发送到我的Node Express服务器
我之前发过帖子,但我认为我处理问题的方法是错误的
问题:
当我使用HTTP客户端提交JSON表单数据时,我的req.body
htmlifes特殊字符:
//发送嵌套的JSON.stringized对象
const response1=等待获取(
`${baseUrl}/chhands/${granthState.lastChhand.id}/pauris`,
{
方法:“POST”,
标题:{'Content-Type':'application/json'},
正文:JSON.stringify({
波里:格式化的图克,
last_pauri_id:granthState.lastPauri?.id,
}),
}
);
这是控制台.log的结果ing{pauri:formattedTuk,last\u pauri\u id:granthState.lastPauri?.id}
:
提交嵌套JSON对象时后端的外观:
这里是我更困惑的地方:
这里,我不发送嵌套对象,只发送formattedTuk
[Array]对象,如下所示:
[
{
线路编号:1,
content_unicode:'ਆਪ ਅਛਤ ਸਮਰੱਥ ਪ੍ਰਭੁ ਦਈ ਬਡਾਈ ਨਾਮ ।',
内容:'Awp ACq smr'Q pRBu deI bfweI nwm[',
内容(音译)英文:
“啊,阿查特·萨马拉·普拉赫·迪耶·巴达伊·纳姆”,
首字母:'ਆਅਸਪਦਬਨ',
thamkis:[],
vishraams:[],
},
];
仅提交数组对象时后端的外观:
我尝试过的其他事情:
- 使用Axios(而不是节点获取),它提供了相同的效果
- 用过邮递员,效果也一样
- 仔细检查了我的
和内容类型
,但看起来都不错字符集
body parser
,但似乎Express.json()
也给了我同样的效果。我也看到有人建议使用qs.stringify()
,但我现在做的似乎相当简单
app.use(morgan('tiny'));
应用(头盔());
使用(express.json());
应用程序使用(cors());
更新:
fetch(“http://localhost:1469/api/v1/chhands/53/pauris", {
“标题”:{
“接受”:“*/*”,
“接受语言”:“en-US,en;q=0.9”,
“内容类型”:“应用程序/json”,
“sec fetch dest”:“空”,
“秒提取模式”:“cors”,
“sec获取站点”:“同一站点”
},
“推荐人”:http://localhost:3000/",
“referrerPolicy”:“交叉来源时严格来源”,
“正文”:“{\“pauri\”:[{\“line\u number\”:1,“content\u unicode\”:\”ਆਪ ਅਛਤ ਸਮਰੱਥ ਪ੍ਰਭੁ ਦਈ ਬਡਾਈ ਨਾਮ ।\“,”内容“:”Awp ACq smr`Q pRBu deI bfweI nwm[”,”内容“音译”英语“:”aap ACHAT samara'th PRBH dhiee baddaiee naam“,”第一个字母“:”ਆਅਸਪਦਬਨ\“,“thamkis\”:[],“vishraams\”:[],“last\u pauri\u id\”:60}”,
“方法”:“发布”,
“模式”:“cors”,
“凭证”:“忽略”
});
这感觉更像是一个关于如何创建formattedTuk的问题,而不是您使用什么客户端的问题。怎么回事?当我记录它时,这正是预期的。此外,如果我在邮递员中发送相同的响应,比如:{“pauri”:[{…}],“last_pauri_id”:60}
它仍然给出奇怪的编码。您能分享您的确切“fetch”吗请求?您可以通过右键单击“网络”部分中的请求并从打开的上下文菜单中选择“复制为获取”(仅在Chrome/Chrome中工作)@dsomel21 i可能会出错!apologies@ErolKESKİN我在“获取”中编辑过请求。这是一个非常有用的功能,但是在这里,我们可以看到我们发送的字符是正确的。
// Sending the raw array object stringified {}
const response2 = await fetch(
`${baseUrl}/chhands/${granthState.lastChhand.id}/pauris`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(formattedTuk),
}
);