我可以使用node.js将奇怪的文件名转换为人类可读的文件名吗?

tuwxkamq  于 2021-10-10  发布在  Java
关注(0)|答案(0)|浏览(202)

嗨,我正在尝试转换的文件名和内容 EUC-KRUTF8 . 由于我使用的是macos(bigsur 11.4),如果使用提供解压功能的操作系统解压,文件名和内容就不会有问题。但当我试图以编程方式解决这个问题时,我解决了内容编码,但文件名被破坏了。
我在用拉链拉衣服 extract-zip ,编码器 iconv-lite . 参见下面的代码。

import extract from 'extract-zip'
import iconv from 'iconv-lite'
import fs from 'fs'
import path from 'path'

// download file from web...

const targetPath = ZIP_FROM_WEB

try {
  await extract(zipPath, { dir: targetPath })
} catch (err) {
  logger.error(`[ZipExtractError] ${err}`)
  fs.rmSync(targetPath, { force: true, recursive: true })
  process.exit(1)
}

const eucKrFiles = fs.readdirSync(targetPath)

eucKrFiles.forEach(fileName => {
  if (path.extname(`${targetPath}/${fileName}`) !== '.txt') {
    return
  }
  // read and overwrite EUC-KR to UTF8
  const euckrContent = fs.readFileSync(`${targetPath}/${fileName}`)
  const utf8EncodedContent = iconv.decode(euckrContent, 'euc-kr')
  fs.writeFile(`${targetPath}/${fileName}`, utf8EncodedContent, err => {
    if (err) {
      logger.error(`[UTF8ConversionError] ${err.message} ${err.stack}`)
      process.exit(1)
    }
  })
  logger.info(`[UTF8FileConversion] Successfully convert ${fileName} encoding EUC-KR to UTF8.`)
})

但是文件名是这样的。
文件名的好坏
另外,来自同一站点的其他文件(每日目录),这个问题从未发生过。
我怎样才能解决这个问题?我能把这个奇怪的文件名转换成人类可读的吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题