node.js - 我可以使用 node.js 将奇怪的文件名转换为人类可读的吗?
问题描述
您好我正在尝试将文件名和内容转换EUC-KR
为UTF8
. 由于我使用的是 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.`)
})
但是文件名是这样的。
此外,来自同一站点(每日目录)的其他文件,这个问题从未发生过。
我怎么解决这个问题?我可以将这个奇怪的文件名转换为人类可读的吗?
解决方案
推荐阅读
- rspec - Rspec Capybara 断管
- python - 索引 Python 打印语句
- windows - 用于备份 SQL Server 数据库的 Windows 批处理文件
- database - 在 MAMP 中与 Wordpress 建立数据库连接时出错
- ubuntu-18.04 - pip3 安装错误 - 新的 ubuntu 18.04 安装
- django - 无法向模型添加新列
- ubuntu-16.04 - 尝试在 64 位 Ubuntu Linux O/S 上运行 aarch64-gnu-linux-g++(64 位版本)时如何解决“没有这样的文件或目录”?
- asp.net - 将项目升级到 Visual Studio 2019 的问题
- uppaal - UPPAAL 中的多重同步
- reporting-services - Power BI 报表服务器自定义身份验证:在不同计算机中托管网页和 PBIRS 的 IIS