最近在做一个项目需求是读取计算机名称
在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)
})

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐