【nodejs】exec在windows下读取中文乱码问题

最近在做一个项目需求是读取计算机名称
在windows上使用nodejs exec读取时会有些电脑上会出现乱码问题

直接在cmd上执行hostname,返回的是没有问题的
在这里插入图片描述
当我使用exec读取时就乱码了,虽然可以使用iconv进行转码,但是不同电脑的活动代码页是不一样的,就需要在获取后根据chcp值做对应的转码。

常见的chcp:
在这里插入图片描述
在这里插入图片描述

获取hostname的代码:

const CODE_PAGE = {
    
    
    '936': 'gbk',
    '65001': 'utf-8'
};
exec('chcp', function (_err, _stdout, _stderr) {
    
    
    if (_err) {
    
    
    	console.error(_err)
    }
    const page = _stdout.replace(/[^0-9]/ig, "");
    let _encoding = CODE_PAGE[page]
    exec('hostname', {
    
     encoding: 'buffer' }, function (err, stdout, stderr) {
    
    
        if (err) {
    
    
            console.error(err)
        }
        const _de = iconv.decode(stdout, _encoding)
        const hostname = iconv.encode(_de, 'utf-8').toString().trim() || ''
        console.log("hostname: ", hostname)
    })
})

分享一下mac的:

macOS活动电脑名称ComputerName 命令:

exec('scutil --get ComputerName', {
    
     encoding: 'utf-8' }, function (err, stdout, stderr) {
    
    
   if (err) {
    
    
       console.error(err)
   }
   console.log("ComputerName: ", stdout)
})

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013910042/article/details/126300508
今日推荐