You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中通过require调用windows-1252模块解决编码乱码问题

解决方案

1. 编码乱码&文件识别错误修复

你的转码逻辑属于多余的错误操作,核心原因如下:

  • data.response.stream本身就是接口返回的原生UTF-8格式Buffer,你做的「转字符串→cp1252编码→UTF-8解码」流程会破坏原有正确编码,导致出现�替换字符
  • fs.writeFileSync是同步写入方法,你错误传入了仅异步方法才用的回调函数,且没有指定写入编码,Windows环境下Node.js会默认用系统cp1252编码写入,导致记事本识别为ASCII编码
    不需要引入任何第三方转码库,直接写入原始Buffer即可,想要让Windows记事本正确识别为UTF-8,可以额外加UTF-8 BOM头。

2. 模块引入报错修复

你遇到的require/import报错是因为windows-1252新版本为纯ES模块,仅支持import语法,和你项目使用的CommonJS规范不兼容。直接移除所有转码相关依赖(iconv、iconv-lite、utf8、windows-1252等)即可解决该问题,本身也不需要这些依赖。


修正后完整代码

const newman = require('newman');
const fs = require('fs');
const path = require('path');

// 提前创建results目录避免写入报错
const resultsDir = './results';
if (!fs.existsSync(resultsDir)) {
    fs.mkdirSync(resultsDir, { recursive: true });
}

let pageNumber = 16287;
// UTF-8 BOM头,用于让Windows记事本正确识别编码
const UTF8_BOM = Buffer.from([0xEF, 0xBB, 0xBF]);

newman.run({
    collection: require('./postman-collection.json'),
    iterationData: './iteration-data.csv',
    color: 'on',
    verbose: 'on',
    exportCollection: './after_pmRuns',
    delayRequest: 500,
    environment: require('./postman-environment.json'),
    reporters: 'cli',
}).on('request', (error, data) => {
    if (error) {
        console.log(error);
        return;
    }
    console.log('Request name: ' + data.item.name);
    // 直接打印原始UTF-8内容
    console.log(data.response.stream.toString('utf8'));

    const currentPageNumber = pageNumber++;
    const requestName = data.item.name.replace(/[^a-z0-9]/gi, '-');
    const randomString = Math.random().toString(36).substring(7);
    const fileName = path.join(resultsDir, `_00${currentPageNumber}-response-${requestName}-${randomString}.json`);

    // 拼接BOM头和原始响应Buffer直接写入,不需要任何转码
    const fileContent = Buffer.concat([UTF8_BOM, data.response.stream]);
    fs.writeFileSync(fileName, fileContent);
    console.log(`文件已写入:${fileName}`);
});

内容的提问来源于stack exchange,提问作者David Saint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:21:01