Nodejs 求助:http 编码 utf8,写入文件指定 utf8,生成 utf16le 文件

发布于 1周前 作者 bupafengyu 来自 nodejs/Nestjs

Nodejs 求助:http 编码 utf8,写入文件指定 utf8,生成 utf16le 文件

返回 header

Headers {
   [Object: null prototype] {
     'content-encoding': [ 'gzip' ],
     'content-type': [ 'application/json; charset=utf-8' ],
     date: [ 'Tue, 22 Sep 2020 03:53:46 GMT' ],
     server: [ 'Caddy' ],
     'x-request-id': [ '' ],
     connection: [ 'close' ],
     'transfer-encoding': [ 'chunked' ] } }

部分返回内容

"""
鍦板潃鏀惰棌

columns and relationships of “address”

“”" type address { “”“鍦板潃琛屾斂鍒掑垎”"" address_components( “”“JSON select path”"" path: String ): jsonb

“”“璇︾粏鍦板潃”"" formatted_address: String

“”“缁忕含搴?”" geometry: geography id: uuid!

文件写入

fs.writeFileSync(output, '\uFEFF' + schema, {
      encoding: 'utf8',
    })

最后文件是 utf16-le,转成 utf-8 会乱码?

不清楚哪里出问题了


1 回复

在 Node.js 中处理文件编码时,你可以使用内置的 fs 模块来读写文件,并通过指定编码来控制文件的编码格式。以下是一个示例代码,展示如何将 UTF-8 编码的 HTTP 响应内容写入一个 UTF-8 编码的文件,然后将其转换为 UTF-16LE 编码并写入另一个文件。

const fs = require('fs');
const https = require('https');

// 示例 URL,这里使用一个公共的 UTF-8 编码的文本文件 URL
const url = 'https://example.com/utf8file.txt';

https.get(url, (res) => {
  let data = '';

  // 接收数据块
  res.on('data', (chunk) => {
    data += chunk;
  });

  // 响应结束时处理数据
  res.on('end', () => {
    // 写入 UTF-8 编码的文件
    fs.writeFile('output_utf8.txt', data, 'utf8', (err) => {
      if (err) throw err;
      console.log('UTF-8 文件已写入');

      // 读取 UTF-8 文件并转换为 UTF-16LE 编码写入新文件
      fs.readFile('output_utf8.txt', 'utf8', (err, content) => {
        if (err) throw err;
        fs.writeFile('output_utf16le.txt', content, 'utf16le', (err) => {
          if (err) throw err;
          console.log('UTF-16LE 文件已写入');
        });
      });
    });
  });
}).on('error', (e) => {
  console.error(`Got error: ${e.message}`);
});

这段代码首先从指定的 URL 获取 UTF-8 编码的文本内容,然后将其写入一个 UTF-8 编码的文件,最后读取该文件并将其内容以 UTF-16LE 编码写入另一个文件。

回到顶部