Comment faire pour convertir un lot de fichiers stockés dans l'utf-8 à quelque chose qui fonctionne à partir d'un autre fichier de commandes et exécuter
J'ai un programme que j'utilise pour créer un fichier de commandes. Mon problème est que le programme de la sortie est de l'UTF-8, donc dès que tout les signes diacritiques comme é,è,ö,Ä sont dans mon fichier batch, il échoue.
Il semble que je ne peux pas trouver un moyen de convertir mon de sortie à rien, mais en UTF-8 dans le programme crée le fichier de commandes.
Je pensais donc à la création de deux bach fichiers. Le réel de l'un et de l'autre, qui transforme le réel de l'UTF-8 à la norme ANSI (Windows page de Codes 1252, ou peut-être cp 850), puis l'exécute après que. Bien sûr, j'ai ajouter un rssa xxxx comme la première commande de la réelle fichier de commandes.
Donc ma question est est-il une alternative à iconv sur Windows - ou comment convertir un fichier texte UTF-8 pour windows page de codes à l'aide d'un deuxième fichier de commandes. Est-il rien de construit dans Win XP et que je pouvais l'utiliser ou est-il un gratuit et redistribuable de l'outil que je pourrais utiliser pour cela?
Remarque:
chcp 65001
ne fonctionne pas pour les fichiers de commandes.
EDIT 1:
sur windows XP, j'ai créé deux fichiers batch pour tester la première réponse.
1.chauve-souris encodé en UTF-8 sans BOM contient:
chcp 1252
cd üöä
2.bat aussi encodé en UTF-8 sans BOM - mais sans aucun caractère spécial contient:
chcp 1252
type "1.bat" >"ansi_file.bat"
L'résultant ansi_file.chauve-souris créé lorsque l'on exécute 2.chauve-souris sera toujours codé en utf-8 et pas encodé en ansi.
EDIT 2:
Mentionnés inverser le processus fonctionne.
chcp 1252
echo ü > ansi.txt
cmd /u /c type ansi.txt > unicode.txt
mais aucune des deux lignes suivantes
cmd /a /c type unicode.txt > back2ansi.txt
type unicode.txt > back2ansi_v2.txt
me met dos à la norme ANSI. J'ai essayé cette fois sur Win XP et Win 7.
Quelqu'un peut-il aider?
REMARQUE:
Je suis conscient de la façon d'utiliser le Windows Script Host et VBS. Je voudrais éviter, selon l'hôte de script si. Le VBS méthode est détaillée ici: http://msdn.microsoft.com/en-us/library/windows/desktop/aa368046%28v=vs.85%29.aspx
EDIT 3:
Le fichier texte est créé contenant un unicode ü ci-dessus n'est pas de l'utf-8
Le Windows fichier unicode est HEX:
FC 00 20 00 0D 00 0A 00
UTF-8 sans BOM serait HEX:
C3 BC 20 0D 0A
Le VBS solution liée à la ne fonctionne qu'avec la forme unicode mais échoue sur le UTF-8.
J'ai besoin de les convertir en UTF-8 vers une autre page de code donc même pas qu'on semble fonctionner pour moi...
Vous devez vous connecter pour publier un commentaire.
Vous avez déclaré que vous ne voulez pas compter sur l'hôte de script, mais il n'est pas natif de commande de traitement par lots qu'il peut faire ce que vous voulez. Vous allez avoir à utiliser quelque chose - delà de la simple lot. L'hôte de script est natif sous Windows, donc je pense que ce ne serait pas un problème.
Suivantes UTF8toANSI.vbs script convertit en UTF-8 (sans BOM) en ISO-8859-1, (essentiellement la même que la page de code 1252). Il est adapté de VB6/VbScsript modifier le fichier /écriture de fichiers avec l'encodage ansii.
Le script VBS aurait besoin d'être dans votre répertoire courant ou de votre chemin.
Un script batch pour convertir et exécuter votre encodés en utf-8 script pourrait ressembler à quelque chose comme ceci:
Réponse originale à cette question: ci-dessous est ma réponse originale à cette question qui travaille pour de l'UTF-16 BOM, mais pas pour de l'UTF-8
La sortie de commandes internes est automatiquement convertie à la norme ANSI si la sortie est courante ou redirigé vers un fichier.
Le processus peut aller dans le sens inverse si CMD est démarré avec le
/U
option, mais malheureusement, l'unicode octets d'en-tête sera absent. Mais bien sûr, c'est un non-problème pour votre situation.Dans Unix, je voudrais utiliser le "iconv" outil pour la conversion entre les codages:
Il semble une version pour Windows est disponible à http://gnuwin32.sourceforge.net/packages/libiconv.htm
Vous pouvez obtenir de nombreux GNU utilitaires de ligne de commande à partir de la GnuWin32 projet. Qui comprend
iconv
(et beaucoup plus):