我想將 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
物件。