【问题标题】:Converting from Windows-1251 to UTF-8 in Node.js在 Node.js 中从 Windows-1251 转换为 UTF-8
【发布时间】:2021-11-05 22:56:08
【问题描述】:

我需要将字符串从 Windows-1251 转换为 UTF-8。

我尝试使用iconv 执行此操作,但我得到的只是这样的:

пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ

var iconv = new Iconv('windows-1251', 'utf-8')
title = iconv.convert(title).toString('utf-8')

【问题讨论】:

标签: javascript node.js


【解决方案1】:

这是解决您问题的有效方法。您必须先使用 Buffer 并将您的字符串转换为二进制。

const Iconv = require('iconv').Iconv;

request({ 
    uri: website_url,
    method: 'GET',
    encoding: 'binary'
}, function (error, response, body) {

        const body = new Buffer(body, 'binary');
        conv = Iconv('windows-1251', 'utf8');
        body = conv.convert(body).toString();

});

【讨论】:

  • +1 您的解决方案对我有用。谢谢。但是我使用了windows1251而不是iconv
【解决方案2】:

如果你从文件中读取,你可以使用类似的东西:

const iconv = require('iconv-lite');
const fs = require("fs");

fs.readFile("filename.xml", null, (err, data) => { 
    if(err) { 
        console.log(err)
        return
    }

    const encodedData = iconv.encode(iconv.decode(data, 'win1251'), 'utf8')
    fs.writeFile("result_filename.xml", encodedData, () => { })
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-30
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多