在 Windows 命令列上將 ANSI 文字檔案轉換為 UTF8

在 Windows 命令列上將 ANSI 文字檔案轉換為 UTF8

我想將 ANSI 編碼的文字檔案 (Win 1252) 轉換為不含 BOM 的 UTF8,最好透過命令列呼叫。我的用例:我從 Stata 匯出 .tex 文件,我想用 LuaLaTeX 來編譯。 Stata 顯然不支援 UTF8,LuaLaTeX 不支援任何字符,因此會卡住一些非 ASCII 字元。我可以從 Stata 內部呼叫 shell 命令,因此如果我可以在 Stata 腳本中即時轉換,那就太好了。

所以理想情況下我希望能夠呼叫像例如這樣的命令convert2UTF.cmd file.tex。另一個不錯的選擇是對資料夾內的檔案進行批次轉換(例如使用 *stata.tex 轉換所有檔案)。此外,如果該解決方案能夠與預設的 Windows 工具(最低 Windows 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物件。

Google搜尋:“vbs 將檔案 ansi 轉換為 utf-8”

相關內容