【发布时间】:2021-07-13 20:11:02
【问题描述】:
我正在尝试将在 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()
【问题讨论】:
-
body.toString('utf8')可能是错误的,因为如果body不是 UTF-8,这一步已经替换了无效的 CP1251 字符。 -
@Evert 我也试过
body.toString() -
也不要那样做。 javascript中的字符串是 unicode,所以如果你在从CP1251转换之前将它转换为字符串,它总是会出错。您的 CP1251 库是否允许您使用缓冲区作为输入?
-
我猜它只接受文本:npmjs.com/package/windows-1251
-
你的 nodejs 服务器是否在 windows 上运行?我也在努力转换编码..,我所做的是使用一个 powershell 脚本,它总是将它编码为 utf-8,而无需指定输入格式。该脚本是通过 child_process 从 nodejs 应用程序调用的,基本上只包含这一行:
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False)+ 读取和写入文件 ofc..