我想将 ANSI 编码的文本文件 (Win 1252) 转换为不带 BOM 的 UTF8,最好通过命令行调用。我的用例:我从 Stata 导出 .tex 文件,然后使用 LuaLaTeX 进行编译。Stata 显然不支持 UTF8,LuaLaTeX 不支持除 UTF8 之外的任何文件,因此会阻塞一些非 ASCII 字符。在 Stata 内部,我可以调用 shell 命令,因此如果我可以在 Stata 脚本中即时进行转换,那就太好了。
因此,理想情况下,我希望能够调用类似这样的命令convert2UTF.cmd file.tex
。另一个不错的选择是对文件夹内的文件进行批量转换(例如,使用 *stata.tex 转换所有文件)。此外,如果该解决方案可以与默认的 Windows 工具(最低为 Win 7,最好为 XP)配合使用,那就太好了。
有人问过类似的问题这里之前Cygwin/GnuWin32 方法有问题,因为我希望能够转换而不需要在机器上安装额外的软件。powershell 方法看起来很有希望,但显然out-file -en utf8
用 BOM 保存了文件。
另一种 powershell 方法似乎转换为没有 BOM 的 UTF8
foreach($i in ls -recurse -filter "*.*") {
if (
$i.Extension.ToLower() -eq ".tex"
) {
$MyFile = Get-Content $i.fullname
[System.IO.File]::WriteAllLines($i.fullname, $MyFile)
}
}
不幸的是,我不知道如何运行它。我将其作为 powershell 脚本保存到与 .tex 文件相同的文件夹中,但当我运行它时,它并没有触及它们。所以显然缺少了一些东西。不用说,我对 powershell 的了解几乎为零。此外,当从 Stata 调用它时,我想将文件名作为参数传递。
答案1
我认为您可以尝试使用 VBS 脚本和ADODB.Stream
对象。