项目场景:
项目:webpack+electron+vue3,运行环境: Windows 系统
问题描述
使用electron的 shell.openExternal(filePath),以桌面的默认方式打开给定的文件。filePath中含有中文时 ,打开文件失败。
import { shell } from "electron";
shell
.openExternal("E:\测试\test.bat")
.then(() => {
console.log("启动成功");
})
.catch(() => {
console.log("启动失败");
});
原因分析:
经查找发现 webpack默认的打包编码使用的是utf-8 ,而windows系统使用的编码规则是gbk,两种不同的编码方式导致项目在获取路径时中文乱码,获取不到正确的路径从而打开文件失败。
解决方案:
通过 iconv-lite 对路径编码
const encodePath = iconv.encode(filePath, "ascii").toString("binary")