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

2023-05-16

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

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【nodejs】exec在windows下读取中文乱码问题 的相关文章

  • 如何处理来自单独线程的窗口消息?

    我希望启动一个单独的线程来处理窗口消息 通过阻塞 GetMessage 循环 但之后仍然在初始线程中创建窗口 在单独的线程中 一旦启动 我就会调用PeekMessage使用 PM NOREMOVE 确保消息队列存在 有必要吗 然后 Atta
  • 不和谐机器人 |不和谐.js |类型错误:无法读取未定义的属性“长度”

    我正在制作一个 Discord 机器人 并且正在使用 CodeLyon 的视频作为参考 该错误位于我的 message js 文件中 该文件包含以下内容 require dotenv config create cooldowns map
  • Windows 上最快的屏幕捕获方法

    我想为Windows平台编写一个截屏程序 但不确定如何捕获屏幕 我知道的唯一方法是使用 GDI 但我很好奇是否还有其他方法可以实现此目的 如果有的话 哪种方法产生的开销最小 速度是首要任务 截屏程序将用于录制游戏镜头 不过 如果这确实缩小了
  • 在 Node.js 中,什么是“on”?

    In 官方文档 http nodejs org docs v0 6 3 api http html http ClientResponse 有一些示例代码 var req http request options function res
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • Nodejs 在循环中等待

    我想循环等待 实现此目的的最佳方法是什么 这是我的实际代码 var groups 461 6726 3284 4 121 11 399 1735 17 19 1614 groups forEach function value myfunc
  • 如何获取 vuejs 组件单元测试中定义的“this”变量

    我正在尝试在 npm 脚本中使用 mocha webpack 来测试 vuejs 组件 我在测试中像这样嘲笑 vuex 商店 const vm new Vue template div div
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • 摆脱node-jsx

    在我的 NodeJS 应用程序的路由器中 我想渲染一个 React 应用程序 由于它没有被浏览器化 并且已反应 因此它返回unexpected token lt 构建时出错 我发现如果我require node jsx install 它不
  • 在 Mongoose 中保存对象后如何获取 objectID?

    var n new Chat n name chat room n save function console log THE OBJECT ID that I just saved 我想 console log 我刚刚保存的对象的对象 I
  • express.js api 应用程序中的内存泄漏

    我正在运行一个express js应用程序 它用作REST API 一个端点启动 puppeteer 并使用多个过程测试我的网站 启动应用程序并持续消耗端点后 我的 docker 容器每小时都会耗尽内存 如下所示 首先 我认为我的 pupp
  • Excel文件下载在使用exceljs的node.js中不起作用

    大家好 我是 MEAN Stack 的新手 我想在单击导出按钮时下载 Excel 文件 我正在使用此参考链接下载 Excel 文件 https www npmjs com package exceljs https www npmjs co
  • 在网页上发送Apache Kafka数据

    我正在构建一个实时能源监控系统 其中数据来自传感器 每秒都会有新的数据 使用的数据将被聚合并呈现为图表 我研究过大量数据的实时流处理 这让我想到了 Apache Kafka 现在我的网络应用程序正在使用 Express js 我在用kafk
  • 带有 for 循环和管道的批处理脚本

    我想要一个目录中的所有 csv 文件 其文件名不包含单词 summary 在命令提示符下我可以键入以下命令 dir b my dir csv find V summary 当我尝试将上述命令传输到批处理文件中时 我遇到了一个问题 因为 fo
  • 作为 Visual Studio Team Services 构建任务的一部分运行“节点测试”,结果显示在“测试”选项卡中

    我有一个项目 其中包含我从命令行使用 Mocha 运行的测试 我已经在我的中设置了一个测试脚本packages json 如下所示 test mocha spec js reporter dot require jsdom global r
  • 通过sequelize.query() 插入原始查询时不会触发挂钩

    我有以下内容EmployeeMySQL 数据库模型 var bcrypt require bcrypt module exports sequelize DataTypes gt const Employee sequelize defin
  • npm install 不下载最新包

    语境 我在使用 npm install 命令使用最新的依赖项更新我的 package json 时遇到问题 我正在具有多分支管道的 Jenkins 从属设备上运行 不确定这是否是原因 另一个帖子有类似的问题 但没有得到答复 npm 安装后
  • 如何在 Windows 上的 GCC 中链接 CS50 C 库

    我是 编程新手 一直在尝试使用以下命令编译我的代码MinGW https en wikipedia org wiki MinGW GCC 但我尝试包括CS50 https en wikipedia org wiki CS50 cs50 c
  • 在数据库准备好之前运行 Jest 测试

    我正在使用 Jest 来测试我的带有 SQLite 数据库的 Express API 但是出现了以下问题 测试在数据库准备好并创建表之前运行 我使用以下代码连接到数据库 const connectToDatabase gt let db i

随机推荐

  • ubuntu安装后分辨率只有一个选项

    ubuntu 16 04安装后分辨率只有一个选项 1024x768 xff0c 使用xrandr命令出现错误 xff1a xrandr Failed to get size of gamma for output default xff0c
  • android.hardware.Camera入坑之旅

    1 相机预览方向适配 可以参考谷歌官方适配方案 public static void setCameraDisplayOrientation Activity activity int cameraId android hardware C
  • MySQL深入的学习笔记

    MYSQL高级 MySql架构演变 这个很重要 软件的环境是如何从单应用算法极致优化的方向 到分布式的进化 这个时代 就会淘汰好多单体应用的coder 比如我自己 哈哈哈哈 1 0时代 单机单库 单应用 单数据库 快速 方便 好维护 并发量
  • Java变量的声明、初始化和作用域

    一 Java变量的声明 在 Java 程序设计中 xff0c 每个声明的变量都必须分配一个类型 声明一个变量时 xff0c 应该先声明变量的类型 xff0c 随后再声明变量的名字 下面演示了变量的声明方式 double salary int
  • 无线网卡无法启动(代码 10),怎么办?

    前言 无线网卡突然无法启动 xff0c 代码 10 xff0c 怎么办 xff1f 本文记述了作者遇到这个问题的经历和最终解决方法 xff0c 希望我的分享能给大家节约宝贵时间 一 我遇到的问题 先说明一下 xff1a 我用的是华硕的飞行堡
  • systemd内置变量

    替换符含义 b系统的 34 Boot ID 34 字符串 参见 random 4 手册 C缓存根目录 对于系统实例来说是 var cache xff1b 对于用户实例来说是 XDG CACHE HOME E配置根目录 对于系统实例来说是 e
  • IOS轻松实现仿网易新闻顶部滑动指示器(Scrollview实现)

    实现原理很简单 xff0c 就是利用了scrollview进行自定义 xff0c 对外部传入的scrollview滑动事件进行监听 xff0c 源码如下 xff1a xff08 1 xff09 h文件代码 ScrollViewIndicat
  • 【极客日常】Go语言string、int、float、rune、byte等数据类型的转换方法

    golang的数据类型转换是困惑新gopher的一大问题之一 相对于python xff0c golang的数据类型转换可要麻烦的多 xff0c 而且还不走寻常路地诞生了些新的方法跟名词 因此本文讲解golang常见数据类型string i
  • View的mParent变量初始化

    mParent变量实际上是PhoneWindow DecorView类型 xff0c 是所有应用窗口的根视图 xff0c 是FrameLayout的子类 View的requestLayout 函数也是调用了mParent requestLa
  • java:N的N次方

    题目描述 现给你一个正整数N xff0c 请问N N的最左边的数字是什么 xff1f 输入格式 输入包含多组测试数据 每组输入一个正整数N xff08 N lt 61 1000000 xff09 输出 对于每组输入 xff0c 输出N N的
  • CentOS升级curl

    1 安装repo rpm Uvh http www city fan org ftp contrib yum repo rhel6 x86 64 city fan org release 2 1 rhel6 noarch rpm 2 查看该
  • ACM:入口的选择------深度优先搜索

    入口的选择 Time Limit 1000MS Memory Limit 32768K Description Zeism玩的赛车游戏中 xff0c 有一种树形的赛道 树根表示赛道的终点 xff0c 任何一个叶子结点表示一个赛道的入口 xf
  • ACM:n!的位数 :斯特林公式

    n 的位数 Time Limit 2000MS Memory Limit 65536K Description 针对每个非负整数n xff0c 计算其n 的位数 Input 输入数据中含有一些整数n xff08 0 n xff1c 10 7
  • java 自定义封装jdbc dao类

    手动封装jdbc和dao层 xff0c 体会其中的优点与不足 注 xff1a 本次采用的mysql数据库记得添加数据库的驱动包 Dbhelper类 xff1a 对jdbc进行封装 xff0c 采用单例模式 xff0c 不用每次都去连接数据库
  • Mybatis 二级缓存

    mybatis的缓存分为一级缓存和二级缓存 xff0c 缓存是用来缓存部分经常性访问的数据 xff0c 而不必每一次都跑到数据库获取或运算 xff0c 目标是提高系统的性能 一级缓存 对于每一个sqlSession 其中有一个HashMap
  • virtualbox启动报错:Interface VirtualBox Host-Only Ethernet Adapter is not a Host-Only Adapter interface

    参考 xff1a 参考 xff1a windows下VirtualBox使用过程中遇到的一个错误 报错信息 xff1a Interface 39 VirtualBox Host Only Ethernet Adapter 39 is not
  • Tried to access visual service WindowManager from a non-visual Context

    适配Android12时遇到的一个问题 xff0c 做个记录 xff1a 尝试使用WindowManager做一些事情的时候 xff0c 我们一般会先获取WindowManager的实例 xff0c 即 xff1a WindowManage
  • Electron使用electron-builder打包windows时如何签名

    windows打包基本配置 xff1a span class token string 34 build 34 span span class token operator span span class token punctuation
  • Electron打包mac OS安装包的配置和签名(干货)

    1 先看配置 xff08 electron vue xff09 打包使用的是electron builder package json span class token punctuation span span class token o
  • 【nodejs】exec在windows下读取中文乱码问题

    最近在做一个项目需求是读取计算机名称 在windows上使用nodejs exec读取时会有些电脑上会出现乱码问题 直接在cmd上执行hostname xff0c 返回的是没有问题的 当我使用exec读取时就乱码了 xff0c 虽然可以使用