问题描述
从服务器获取的数据以我认为的 ISO-8859-1 编码。 使用“he”库对检索到的文本进行解码后,只解码了部分字符串。
**Retrieved encoded text** - A edição "Arquivo LdoD" é uma edição
解码后预期 - edição "Arquivo LdoD" é uma edição
解码的实际结果 - A edição“Arquivo LdoD”é uma edição
反应代码:
import he from 'he'
.
.
.
useEffect(() => {
getVirtualEditionList(props.acronym)
.then(res => {
setEditionData(res.data.sortedInterpsList)
console.log(res.data.synopsis) //A edição ...
console.log(he.decode(res.data.synopsis)) //A edição "Arquivo LdoD" é ...
setSynopsis(he.decode(res.data.synopsis))
setTitle(he.decode(res.data.title))
setLoading(false)
})
}
},[props.page])
我不得不将检索到的字符串放在代码中,因为 Stackoverflow 已经在解码它的内容,这个解码结果与我在 React 应用程序中解码时得到的值相同。
有没有办法解决这个问题,也许是一种手动解码“他”库无法解码的其余文本的方法?问题似乎出在葡萄牙语/拉丁语字符上 - é、ç、ã、á。
已解决: 将文本编码为 win1252,然后将其解码为 utf-8:
let decoded = iconv.encode(he.decode(res.data.synopsis),'win1252');
setSynopsis(decoded.toString())
解决方法
您确定它不是 Windows-1252?它使用了 ISO-8859-1 中未定义的范围,“智能报价”尤其邪恶。