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 Sub

L'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 Sub

Dans 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 ?

Rechercher des sujets similaires à "obstacle modification encodage fichier txt"