Gostaria de converter um (s) arquivo (s) de texto codificado (s) ANSI (Win 1252) para UTF8 sem BOM, de preferência por meio de uma chamada de linha de comando. Meu caso de uso: exporto arquivos .tex do Stata que desejo compilar com LuaLaTeX. Stata aparentemente não suporta UTF8, LuaLaTeX não suporta nada além e, portanto, engasga com alguns caracteres não-ASCII. De dentro do Stata eu posso chamar comandos shell, então seria bom se eu pudesse fazer a conversão instantaneamente de dentro dos meus scripts do Stata.
Então, idealmente, eu gostaria de poder chamar um comando como, por exemplo convert2UTF.cmd file.tex
. Outra boa opção seria alguma conversão em lote de arquivos dentro de uma pasta (por exemplo, converter todos os arquivos com *stata.tex). Além disso, seria ótimo se a solução funcionasse com ferramentas padrão do Windows (mínimo Win 7, ainda melhor XP).
Perguntas semelhantes foram feitasaquiantes. OAbordagem Cygwin/GnuWin32é problemático porque eu gostaria de poder converter sem precisar instalar software extra em uma máquina. Oabordagem powershellparece promissor, mas aparentemente out-file -en utf8
salva o arquivo com BOM.
Outra abordagem do PowerShellque parece converter para UTF8 sem 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)
}
}
Infelizmente não consigo descobrir como executá-lo. Salvei-o como um script do PowerShell na mesma pasta dos arquivos .tex, mas quando o executo, ele não os toca. Então, aparentemente, há algo faltando. Escusado será dizer que meu conhecimento sobre PowerShell é quase nada. Além disso, gostaria de passar um nome de arquivo como argumento ao chamá-lo do Stata.
Responder1
Acho que você pode tentar usar script e ADODB.Stream
objeto VBS.