使用 nodeFetch 在 JSON API 响应中正确显示特殊字符
Posted
技术标签:
【中文标题】使用 nodeFetch 在 JSON API 响应中正确显示特殊字符【英文标题】:Correctly display special characters in JSON API response using nodeFetch 【发布时间】:2019-11-04 08:06:43 【问题描述】:我有一个通过 HTTP 与 RESTful API 通信的反应应用程序。 API 返回一个可能包含特殊字符的 JSON 响应正文。
示例响应可能如下所示:
"name": "Property One",
"description": "Res Thick Film 0805 49.9 Ohm 1% 0.25W(1/4W) ±100ppm/°C Pad SMD Automotive T/R",
...
有问题的特殊字符是(但不限于)±和°。
我使用nodeFetch
执行请求,如下所示:
nodeFetch(url, method: 'GET', headers ).then(response => response.json());
如果我在使用 response.json()
反序列化对象后观察该对象,description
属性现在看起来像这样:
"Res Thick Film 0805 49.9 Ohm 1% 0.25W(1/4W) �100ppm/�C Pad SMD Automotive T/R"
如何阻止特殊字符被替换为 �?
【问题讨论】:
看起来像nodeFetch
handles utf-8 自动。您对 REST 服务器有任何控制权吗?您可以将其设置为以 utf-8 编码其响应吗? 'Content-Type: text/html; charset=utf-8'
@DSCH 我有访问权限。将Content-Type
更改为application/json; charset=UTF-8
和nodeFetch
正确反序列化了响应!回答问题,以便我奖励赏金!
你使用的是哪个版本的nodefetch?
【参考方案1】:
你也可以看看这个问题,可能 cskau-g repost 应该对你有帮助 https://github.com/dart-lang/http/issues/175
我认为问题在于编码为 utf-8 并且内容类型必须设置为 text/html
【讨论】:
【参考方案2】:您可能应该将标题:Content-Type
设置为 text/html; charset=utf8
。 nodeFetch
支持 UTF-8
开箱即用
【讨论】:
如果nodeFetch
的版本是2.X
,那么根本不需要在服务器端进行更改。不确定 OP 使用的是什么版本以上是关于使用 nodeFetch 在 JSON API 响应中正确显示特殊字符的主要内容,如果未能解决你的问题,请参考以下文章
使用表单的响应将数据集属性保存在 JSON 文件中 (Vue.js)