gpt4 book ai didi

node.js - utf-8 中的 nodeJS : convert response. 正文(来自 windows-1251 编码)

转载 作者:行者123 更新时间:2023-12-04 14:55:04 24 4
gpt4 key购买 nike

我正在尝试将以 windows-1251 编码的 HTML 正文转换为 utf-8 但我仍然在 html 上弄乱字符>.

它们基本上是俄语字母表,但我无法正确显示它们。我得到 ???????? ?? ???

const GOT = require('got') // https://www.npmjs.com/package/got
const WIN1251 = require('windows-1251') // https://www.npmjs.com/package/windows-1251

async function query() {
var body = Buffer.from(await GOT('https://example.net/', {resolveBodyOnly: true}), 'binary')
var html = WIN1251.decode(body.toString('utf8'))
console.log(html)
}

query()

enter image description here

最佳答案

你在这里来回做了很多愚蠢的编码。而且“后退”甚至与“前进”都不匹配。

首先,您使用got 库下载一个网页;默认情况下,got will dutifully decode response texts as UTF-8 .你stuff the returned Unicode string into a Buffer with the binary encoding ,它丢弃了 Unicode 字符串的每个 UTF-16 代码单元的较高八位字节。然后你使用 .toString('utf-8')它将这个残缺的字符串解释为 UTF-8(实际上,它很可能根本不是有效的 UTF-8)。然后将“UTF-8”字符串传递给 windows-1251,将其解码为“code page 1251”字符串。所有这些困惑不可能带来任何好处。

您要使用的 windows-1251 包将所谓的“二进制”(伪拉丁语 1)字符串作为输入。您应该做的是采用二进制响应,将其解释为 Latin-1/‘binary’ string然后传递给windows-1251库进行解码。

换句话说,使用这个:

const GOT = require('got');
const WIN1251 = require('windows-1251');

async function query() {
const body = await GOT('https://example.net/', {
resolveBodyOnly: true,
responseType: 'buffer'
});
const html = WIN1251.decode(body.toString('binary'))
console.log(html)
}

query()

关于node.js - utf-8 中的 nodeJS : convert response. 正文(来自 windows-1251 编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68218368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com