在 Windows 命令行上将 ANSI 文本文件转换为 UTF8

在 Windows 命令行上将 ANSI 文本文件转换为 UTF8

我想将 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对象。

谷歌搜索:“vbs 将文件 ansi 转换为 utf-8”

相关内容