Obstacle dans la modification de l'encodage d'un fichier .txt
Bonjour,
J'ai crée un programme en vue de changer l'encodage existant d'un fichier .txt, passant de UTF-16 LE à UTF-8 mais il y a un message d'erreur que voici:
Pour l'instant je suis en train de chercher.
Sub aargh()
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "fichier XML à adapter"
.Filters.Clear
.Filters.Add "*.files", "*.*"
If .Show = True Then
fn = .SelectedItems(1)
Else
MsgBox "pas de fichier sélectionné"
End If
End With
Open fn For Input As #1 'Ouverture du fichier
FileLength = LOF(1) 'Donne la taille d'un fichier ouvert en octet.
r = Input$(FileLength, #1) 'Placement du texte dans r
'MsgBox (r)
Close #1
'r = Replace(r, "UTF-16 LE", "UTF-8")
'Open fn For Output As 1
'Print #1, r
'Close 1
End SubL'entrée dépasse la fin de fichier (erreur 62) |
Bonjour,
À tester un exemple de comment vous pourriez le faire en utilisant un ActiveX Data Objects (ADO) Stream :
Sub ConvertEncoding()
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "fichier XML à adapter"
.Filters.Clear
.Filters.Add "*.files", "*.*"
If .Show = True Then
fn = .SelectedItems(1)
Else
MsgBox "pas de fichier sélectionné"
Exit Sub
End If
End With
Dim sourceStream As Object
Set sourceStream = CreateObject("ADODB.Stream")
sourceStream.Type = 2 'Spécifier le type de flux - nous voulons enregistrer des données de type texte/chaîne.
sourceStream.Charset = "utf-16" 'Spécifier le jeu de caractères pour les données textuelles sources.
sourceStream.Open 'Ouvrir le flux et écrire des données binaires dans l'objet
sourceStream.LoadFromFile fn
Dim destStream As Object
Set destStream = CreateObject("ADODB.Stream")
destStream.Type = 2
destStream.Charset = "utf-8"
destStream.Open
destStream.WriteText sourceStream.ReadText
'Save binary data To disk
destStream.SaveToFile Replace(fn, ".txt", "_utf8.txt"), 2 ' 2 = Save create overwrite
sourceStream.Close
destStream.Close
Set sourceStream = Nothing
Set destStream = Nothing
MsgBox "Conversion terminée"
End SubDans ce code, sourceStream est utilisé pour lire le fichier en UTF-16. Ensuite, destStream est utilisé pour écrire le contenu dans un nouveau fichier en UTF-8. Le nouveau fichier a le même nom que l'ancien, mais avec "_utf8.txt" ajouté à la fin.
Ce code suppose que votre fichier d'origine est en UTF-16. Si ce n'est pas le cas, vous devrez ajuster le charset de sourceStream.
Bonjour,
J'ai testé votre code. Il fonctionne. Mais il y a des lignes de commande que je ne comprends pas, je vais les étudier.
Merci de votre aide.
Bonjour,
Quelles sont les lignes que vous ne comprenez pas ?