Besoin de convertir les fichiers texte au format Unicode à partir de l'UTF8 en vbscript
J'ai un tas de fichiers texte dans un dossier que j'ai besoin de changer l'encodage Unicode et au lieu d'ouvrir manuellement les fichiers et de les enregistrer au format Unicode j'aimerais avoir un script pour le faire.
Les fichiers sont actuellement dans l'encodage UTF-8 et mon très limité de script capacités ne peuvent pas comprendre ça. J'ai trouvé le code ci-dessous pour convertir au format Unicode ANSI et lorsque j'utilise ce code, il ne convertir en Unicode, mais il bousille les caractères de sorte que la conversion ne fonctionne pas réellement. Toutes les pensées? Merci à l'avance.
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFolder = fso.GetFolder("C:\test")
Set oFiles = oFolder.files
For each file in oFiles
If Right(file.Name, 3) = "txt" Then
Set ANSIFile = fso.OpenTextFile(file.path, 1, False, False)
ANSIContent = ANSIFile.ReadAll
Set UNICODEFile = fso.OpenTextFile(file.path, 2, False, True)
UNICODEFile.Write ANSIContent
End If
Next
"Unicode" n'est pas un encodage, vous ne pouvez pas modifier un fichier existant "Unicode". Ce encodage voulez-vous dire?
Si vous ouvrez un fichier texte et sélectionnez Fichier-> Enregistrer sous, une des options pour le "Codage" est "Unicode". Si je devais effectuer cette tâche manuellement, je voudrais ouvrir chaque fichier et l'enregistrer dans le même fichier avec l'encodage Unicode.
Si vous ouvrez un fichier texte et sélectionnez Fichier-> Enregistrer sous, une des options pour le "Codage" est "Unicode". Si je devais effectuer cette tâche manuellement, je voudrais ouvrir chaque fichier et l'enregistrer dans le même fichier avec l'encodage Unicode.
OriginalL'auteur user1723699 | 2013-04-09
Vous devez vous connecter pour publier un commentaire.
Malheureusement VBScript ne prend pas en charge ce type de conversion par lui-même. Vous pouvez utiliser un
ADODB.Stream
objet:Ou un peu plus simplifié:
Si vous souhaitez remplacer le fichier existant, vous aurez à utiliser la première version et utiliser le même fichier d'entrée et de sortie. L'utilisation d'une boucle de ce genre pour itérer sur tous les fichiers dans un dossier:
Merci! Qui a certainement travaillé, est-il un moyen de le faire pour tous les fichiers texte dans un dossier et de garder le même nom (ou simplement ajouter un caractère à la fin comme "_U"?
Semble que j'ai compris, tant pis
Personnellement, je n'ai pas de préférence pour les
Write
ouWriteLine
. Est-il une raison de préférer l'un sur l'autre?ajoute un en fin de vie à l'original (converti) de contenu. Avec un peu de malchance qui rompt la poursuite du traitement (Split sur ReadAll, les calculs basés sur le nombre de lignes) ou à des causes systématique de la croissance. En outre, il viole le mantra ".WriteLine .ReadLine; .Écrire .Lire[Tous]".
OriginalL'auteur Ansgar Wiechers
J'ai été en mesure de convertir les fichiers UTF-8 avec ce code. Mais:
1) Au début de la nouvellement générés fichier Unicode il y avait une séquence de (FF FE).J'ai dû enlever les deux premiers caractères sur la première ligne de faire mon vieux code du travail nouveau.
2) Pour les Nuls comme moi, il n'luxe d'avoir le 'Dim' états avec le code. J'ai toujours utiliser l'Option Compare Database /Option Explicit. S'ils ratent ce qui me cause des maux de tête. 🙂
OriginalL'auteur Blacksmith