Я хотел бы преобразовать текстовый файл(ы) в кодировке ANSI (Win 1252) в UTF8 без BOM, в идеале через вызов командной строки. Мой вариант использования: я экспортирую файлы .tex из Stata, которые я хочу скомпилировать с помощью LuaLaTeX. Stata, по-видимому, не поддерживает UTF8, LuaLaTeX не поддерживает ничего, кроме этого, и поэтому подавляется некоторыми не-ASCII символами. Изнутри Stata я могу вызывать команды оболочки, поэтому было бы неплохо, если бы я мог выполнять преобразование на лету из моих скриптов Stata.
Поэтому в идеале я хотел бы иметь возможность вызывать команду, например, convert2UTF.cmd file.tex
. Другим хорошим вариантом было бы пакетное преобразование файлов в папке (например, конвертировать все файлы с помощью *stata.tex). Кроме того, было бы здорово, если бы решение работало со стандартными инструментами Windows (минимум Win 7, еще лучше XP).
Похожие вопросы были заданыздесьпередПодход Cygwin/GnuWin32проблематично, так как я хотел бы иметь возможность конвертировать без необходимости установки дополнительного программного обеспечения на машину.подход powershellвыглядит многообещающе, но, судя по всему, out-file -en utf8
сохраняет файл с BOM.
Другой подход PowerShellкоторый, кажется, преобразуется в UTF8 без BOM
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
Я думаю, вы можете попробовать использовать скрипт и ADODB.Stream
объект VBS.