我有一个 react native 项目,我试图获取一个 html 页面并解析它,以显示它的一些内容。
我最初使用 react 的 fetch api 执行请求。但是,我得到的页面是使用 ISO-8859-7 字符集编码的,如标题“Content-Type: text/html;”所示。charset=iso-8859-7' 存在于响应中,并且有几个字符格式错误(如 '????')。查看文档,我发现:
响应总是使用 UTF-8 解码
因此,我尝试使用 XMLHttpRequest api 和iconv-lite执行请求,如本答案中所述。但是,字符仍然无法正确显示。
接下来,我尝试使用 axios 执行请求,使用 iconv ( ref ),然后使用iso-8859-7 npm 包 ( ref ) 进行解码,但仍然无济于事。
之后,我尝试使用 superagent 执行请求,使用它的charset 插件,(再次使用 iconv 和 iso-8859-7 npm 包分别进行解码)但字符又是 '????'。
我还尝试在我执行的所有请求中将“Accept-Charset”标头设置为“utf-8”,但这根本没有改变响应。除了 Web 浏览器之外,正确显示 html 页面的唯一方法是通过 Postman,尽管我在 Postman 的请求标头中没有看到任何特别之处。
这是我使用提到的包所遵循的过程的抽象伪代码:
图标:
performRequest().then(response => iconv.decode(Buffer.from(response.data)))
ISO-8859-7 包:
performRequest().then(response => iso88597.decode(response.data))
任何帮助将不胜感激!
使用的打包PS版本:
"react-native": "^0.63.3"
"react": "16.13.1"
"axios": "^0.21.0"
"iconv-lite": "^0.6.2"
"superagent": "^6.1.0"
"superagent-charset": "^1.2.0"
"iso-8859-7": "^1.0.0"