2 votes

Convertir le(s) fichier(s) texte ANSI en UTF8 sur la ligne de commande Windows

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.

-1voto

beiro Points 1

Je pense que vous pouvez essayer d'utiliser un script VBS et l'objet ADODB.Stream.

Recherche Google : "vbs convertir un fichier ansi en utf-8"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X