.bat : Conversion de ANSI en UTF-8 avec CHCP 65001

Rezona - 16 nov. 2024 à 07:28
brucine Messages postés 17694 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 16 novembre 2024 - 16 nov. 2024 à 09:04

Bonjour,

Jusqu'à présent j'utilisais le format ANSI pour des ".bat". Mais récemment, j'ai découvert des problèmes de compatibilité dû aux caractères spéciaux. J'utilisais (Alt XXXX) pour convertir correctement les lettres accentuées (nom de fichier, chemin du menu Démarrer...).
En cherchant sur internet, j'ai trouvé une solution qui conssiste à ajouter CHCP 65001 en début de code et à remetttre les accents tel quel sans  (Alt XXXX) pour enregistrer au format UTF-8.

Ma question est, possédant un certain nombre de fichier ".bat" que je ne souhaite pas retester un par un, l'utilisation de CHCP 65001 peut-il créer des perturbations, erreurs... à des fichier .bat qui fonctionnait à merveille en ANSI + (Alt XXXX)?

Merci pour vos avis et, si besoin, éclaircissements.

A voir également:

1 réponse

brucine Messages postés 17694 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 16 novembre 2024 2 575
16 nov. 2024 à 08:11

Bonjour,

Il faudrait que tu précises comment tu as procédé, ce n'est pas clair.

En supposant le test suivant:

echo menu dALT 130marrer

pause

je suis incapable d'obtenir l'affichage correct quand le bat ou cmd est enregistré que ce soit sous ANSI ou sous UTF8 dès lors que le caractère ASCII a été utilisé; il est obtenu seulement si j'ajoute la séquence CHCP 65001 au fichier ANSI et que je l'enregistre sous UTF8.

La moralité est donc que CHCP 65001 ne suffit pas et qu'il faut convertir par lot tous les fichiers de ANSI à UTF8, voir par exemple ici, en remplaçant bien sûr unicode par utf-8 et csv par bat ou cmd.

https://stackoverflow.com/questions/44157064/need-to-batch-convert-a-large-quantity-of-text-files-from-ansi-to-unicode

De manière subsidiaire:

-Si je ne veux pas en voir l'affichage, saisir CHCP 65001>NUL

-Dans un certain nombre de cas de figure (de mémoire par exemple ROBOCOPY), c'est la commande elle-même qui retourne des caractères exotiques même en l'absence d'accents, il faut alors entrer CHCP 1252>NUL, qu'on alternera au besoin avec 65001 dans son fichier de commandes.

0
brucine Messages postés 17694 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 16 novembre 2024 2 575
16 nov. 2024 à 09:04

Qui plus est et si la question est de modifier tous les fichiers sans les ouvrir, il faudra bien que je les ouvre un par un en dehors de réenregistrer pour y ajouter
CHCP 65001>NUL.

Le hic est que si je veux passer à la trappe l'affichage de cette commande, il ne doit pas avoir lieu à la première ligne de chaque fichier mais à la deuxième après la commande @echo off.

La question est facile à régler avec un utilitaire et/ou une commande appropriée dans le monde Linux, beaucoup moins sous Windows en batch brut de coffrage.

On peut le cas échéant s'inspirer de quelque chose de ce genre, mais on a sans doute plus vite fait de modifier manuellement chaque fichier au moment de l'emploi.

https://msfn.org/board/topic/118835-prepend-or-interpend-text-to-a-text-file-via-batch-script/
 

0