Je voudrais convertir des fichiers texte codés en ANSI (Win 1252) en UTF8 sans BOM, idéalement via un appel en ligne de commande. Mon cas d'utilisation : j'exporte des fichiers .tex depuis Stata que je veux compiler avec LuaLaTeX. Apparemment, Stata ne supporte pas l'UTF8, LuaLaTeX ne supporte rien d'autre et donc échoue sur certains caractères non-ASCII. Depuis Stata, je peux appeler des commandes shell, il serait donc bien si je pouvais faire la conversion à la volée depuis mes scripts Stata.
Idéalement, je voudrais pouvoir appeler une commande comme par exemple convert2UTF.cmd file.tex
. Une autre bonne option serait une conversion en lot des fichiers dans un dossier (par exemple, convertir tous les fichiers avec *stata.tex). De plus, ce serait génial si la solution fonctionnait avec les outils par défaut de Windows (minimum Win 7, encore mieux XP).
Des questions similaires ont déjà été posées ici. L'approche Cygwin/GnuWin32 pose problème, car je voudrais pouvoir effectuer la conversion sans avoir à installer de logiciel supplémentaire sur une machine. L'approche powershell semble prometteuse, mais apparemment out-file -en utf8
enregistre le fichier avec le BOM.
Une autre approche powershell qui semble convertir en UTF8 sans BOM est
foreach($i in ls -recurse -filter "*.*") {
if (
$i.Extension.ToLower() -eq ".tex"
) {
$MyFile = Get-Content $i.fullname
[System.IO.File]::WriteAllLines($i.fullname, $MyFile)
}
}
Malheureusement, je ne parviens pas à le faire fonctionner. Je l'ai enregistré en tant que script powershell dans le même dossier que les fichiers .tex, mais lorsque je l'exécute, il ne les modifie pas. Apparemment, il manque quelque chose. Inutile de dire que mes connaissances en powershell sont presque nulles. De plus, je voudrais pouvoir passer un nom de fichier en argument lorsque je l'appelle depuis Stata.