IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Caractères en accents pas juste


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut Caractères en accents pas juste
    Bonjour,
    je renome un fichier mais il ne me l'écris pas comme il faut, il n'y a pas une astuce pour encoder?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    My.Computer.FileSystem.RenameFile(".\ateliers\" & ComboBox1.Text & "_2.txt", nom & ".txt")

  2. #2
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Quel est le résultat obtenu pour le nom de fichier et que veux tu obtenir ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    ca m'écrit comme cela

    �volution n�1 au lieu de évolution n°1

    Atelier Mr24.txt

  4. #4
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    donc si je comprend bien :

    Tu as un fichier nommé A.txt contenant le texte "évolution n°1" correctement écrit.
    Tu renommes A.txt en B.txt et le contenu n'est plus correctement écrit.
    Est ce bien cela ?

    Ton texte "évolution n°1" il vient aussi d'une combobox ? si oui, vérifie qu'il était bien écrit dès le départ dans la combobox. Cela peut venir de ça. Si ça vient de là regarde la réponse que j'ai donnée dans la discussion précédente https://www.developpez.net/forums/d1...d-fichier-ini/. Il faut lire le texte avec le bon encodage, après l'écriture suit toute seule.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Dim nomFichier As String
            Dim nvoFichier As String
            Dim lng As Integer
            Dim count As Integer
            count = 0
            nomFichier = ".\ateliers\" & ComboBox1.Text & ".txt"
            lng = nomFichier.Length
            nvoFichier = nomFichier.Substring(0, lng - 4)
            'nvoFichier = ".\ateliers\" & ComboBox1.Text & "_2.txt"
            Using sw As StreamWriter = File.CreateText(".\ateliers\" & ComboBox1.Text & "_2.txt")
                Try
                    Using sr6 As StreamReader = New StreamReader(".\ateliers\" & ComboBox1.Text & ".txt")
                        Dim line As String
                        ' Read and display the lines from the file until the end 
                        'of the file Is reached.
                        Do
                            line = sr6.ReadLine()
                            If line <> "" Then
                                sw.WriteLine(line)
                                count += 1
                            End If
                        Loop Until line Is Nothing
                        sr6.Close()
                    End Using
                Catch ex1 As Exception
                End Try
                sw.Close()
            End Using
    c'est quand il écrit le fichier par cette méthode: Using sw As StreamWriter = File.CreateText(".\ateliers\" & ComboBox1.Text & "_2.txt") qu'il met des caractères faux?

  6. #6
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Using sr6 As StreamReader = New StreamReader(".\ateliers\" & ComboBox1.Text & ".txt")
    ici lorsque tu fais la lecture du fichier, il faut que tu précise l'encoding pour qu'il puisse lire les caractères correctement.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Using sr6 As StreamReader = New StreamReader(".\ateliers\" & ComboBox1.Text & ".txt", System.Text.Encoding.UTF8)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    j'ai essayé mais ca ne change rien? j'ai l'impression que c'est quand il écrit les lignes qu'il fait des caractère faux?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    j'ai remplacé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Using sr6 As StreamReader = New StreamReader(".\ateliers\" & ComboBox1.Text & ".txt", System.Text.Encoding.UTF8)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Using sr6 As StreamReader = New StreamReader(".\ateliers\" & ComboBox1.Text & ".txt", System.Text.Encoding.Default)
    et ca à l'air de marcher, merci

  9. #9
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Bizarre car je viens d'essayer ton code (en enlevant ce qui est inutile pour le test) et cela fonctionne



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Dim filename As String = ""
            Dim result As DialogResult = OpenFileDialog1.ShowDialog()
            If result = System.Windows.Forms.DialogResult.OK Then
                filename = OpenFileDialog1.FileName
            End If
    
            Dim nomFichier As String
            nomFichier = "C:\Users\XXXXXX\Desktop\bob.txt" 'tu remplaceras les XXXX par ce qui va bien si tu veux faire un test
    
            Using sw As StreamWriter = File.CreateText(nomFichier)
                Try
                    Using sr As StreamReader = New StreamReader(filename, System.Text.Encoding.UTF8)
                        Dim line As String
                        Do
                            line = sr.ReadLine()
                            If line <> "" Then
                                sw.WriteLine(line)
                            End If
                        Loop Until line Is Nothing
                        sr.Close()
                    End Using
                Catch ex1 As Exception
                End Try
                sw.Close()
            End Using
    voir fichiers : Nouveau document texte (3).txt et bob.txt

  10. #10
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Citation Envoyé par pascb423 Voir le message
    j'ai remplacé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Using sr6 As StreamReader = New StreamReader(".\ateliers\" & ComboBox1.Text & ".txt", System.Text.Encoding.UTF8)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Using sr6 As StreamReader = New StreamReader(".\ateliers\" & ComboBox1.Text & ".txt", System.Text.Encoding.Default)
    et ca à l'air de marcher, merci
    Il doit s'agir d'une question de version de quelque chose quelque part car chez moi avec "default" cela fonctionne pas (j'avais essayé). Mais si cela fonctionne pour toi tu n'as plus qu'à remplacer UTF8 par default partout

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    j'ai essayé les 2 mais toujours le problème.

    La première fois, j'ouvre un fichier texte et j'écris dedans par exemple Atelier n°1, quand j'enregistre se fichier, il me met le caractère ° faux, mais si j'ouvre le fichier et que je modifie le caractère faux et que je l'enregistre, et après que je rouvre le fichier il écrit juste?
    c'est à rien y comprendre?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    je vous redonne la sub entière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Dim nomFichier As String
            Dim nvoFichier As String
            Dim lng As Integer
            Dim count As Integer
            count = 0
            nomFichier = ".\ateliers\" & ComboBox1.Text & ".txt"
            lng = nomFichier.Length
            nvoFichier = nomFichier.Substring(0, lng - 4)
            'nvoFichier = ".\ateliers\" & ComboBox1.Text & "_2.txt"
            Using sw As StreamWriter = File.CreateText(".\ateliers\" & ComboBox1.Text & "_2.txt")
                Try
                    Using sr6 As StreamReader = New StreamReader(".\ateliers\" & ComboBox1.Text & ".txt", System.Text.Encoding.UTF7)
                        Dim line As String
                        ' Read and display the lines from the file until the end 
                        'of the file Is reached.
                        Do
                            line = sr6.ReadLine()
                            If line <> "" Then
                                sw.WriteLine(line, System.Text.Encoding.UTF7)
                                count += 1
                            End If
                        Loop Until line Is Nothing
                        sr6.Close()
                    End Using
                Catch ex1 As Exception
                End Try
                sw.Close()
            End Using
            '    End If
            'Next
            Dim nom As String
            nom = ComboBox1.Text
            My.Computer.FileSystem.DeleteFile(".\ateliers\" & ComboBox1.Text & ".txt")
            My.Computer.FileSystem.RenameFile(".\ateliers\" & ComboBox1.Text & "_2.txt", nom & ".txt")

  13. #13
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Using sr6 As StreamReader = New StreamReader(".\ateliers\" & ComboBox1.Text & ".txt", System.Text.Encoding.UTF7)
    remplace UTF7 par UTF8 (j'ai remarqué que UTF7 fonctionne bien avec File.ReadAllLines mais pas avec streamreader)

    L'encodage UTF8 fonctionne bien avec les deux.

  14. #14
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    je crois que la solution réside dans l'imposition du System.Text.Encoding tant à l'ouverture en lecture qu'à l'ouverture en écriture.

    Il faut bien entendu imposer le même System.Text.Encoding dans les 2 cas et sans doute pas n'importe lequel.
    Avec ce qui suit, c'est OK :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                    Dim FichierALire As New StreamReader(TFichierEntree.Text, System.Text.Encoding.Default)
                    Dim FichierAEcrire As New StreamWriter(TFichierSortie.Text, False, System.Text.Encoding.Default)
     
                    While FichierALire.Peek > -1
                        FichierAEcrire.WriteLine(FichierALire.ReadLine())
                    End While
     
                    FichierALire.Close()
                    FichierALire.Dispose()
                    FichierAEcrire.Close()
                    FichierAEcrire.Dispose()
    J'espère que ça ira ...

  15. #15
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Une petite remarque :
    Il n'est pas nécessaire de créer le fichier avec File.CreateText(".\ateliers\" & ComboBox1.Text & "_2.txt"),
    Dim FichierAEcrire As New StreamWriter(TFichierSortie.Text, False, System.Text.Encoding.Default) crée le fichier.

    Mais ce ci n'a rien à voir avec la question initiale

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    j'ai fait des test et apparemment c'est quand je renomme le fichier qu'il y a l'erreur de caractères:

    j'ai trouvé une autre solution, c'est de renommer avec shell du dos mais il me dit qu'il ne trouve pas le fichier, le chemin est juste mais peut etre mal écrit?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("ren D: \projetsvisualstudio\Reparations\Reparations\bin\Debug\ateliers_2.txt ateliers.txt")

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    comment on peut mettre le chemin de recherche du fichier sur l'ordinateur sans connaitre le chemin du style ..\ et le nom de fichier?

  18. #18
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Là, la faute, c'et facile : tu as un espace excédentaire après le D:
    Shell("ren D: \projetsvisualstudio\Reparations\Reparations\bin\Debug\ateliers_2.txt ateliers.txt")
    Le code suivant fonctionnera mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("ren D:\projetsvisualstudio\Reparations\Reparations\bin\Debug\ateliers_2.txt ateliers.txt")
    Mais renommer un fichier ne change pas son contenu, d'autant que tu utilises la même extension TXT.
    Je me pose la question de savoir si tu lis bien le fichier source et le fichier cible avec le même outil, avec NotePad par exemple.

    Avec mon expérience de tout à l'heure, sans imposer le System.Text.Encoding, j'obtenais la même erreur que toi.
    En utilisant, System.Text.Encoding.Unicode, ou UFT32, c'était encore pis ....
    Avec UFT8, c'est toujours l'erreur de départ, les accentués.
    Avec Default, ça marche sans erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim FichierALire As New StreamReader(TFichierEntree.Text, System.Text.Encoding.Default)
    Dim FichierAEcrire As New StreamWriter(TFichierSortie.Text, False, System.Text.Encoding.Default)
    Il est important que la lecture et l'écriture se fassent avec le même format. Je vois aussi dans ton code ci-dessous, que tu définis le System.Text.Encoding au niveau du Writeline, tandis que moi je les définis lors des ouvertures des fichiers, notamment : StreamWriter(TFichierSortie.Text, False, System.Text.Encoding.Default).
    Lorsque tu crées ton fichier avec File.Create, tu ne peux définir le System.Text.Encoding.

    J'espère que ces considérations t'aideront ...

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    la commande en dos
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("ren D:\projetsvisualstudio\Reparations\Reparations\bin\Debug\ateliers_2.txt ateliers.txt")
    fonctionne très bien depuis la ligne de commande dos j'ai essayé mais pas en vb.net
    il dit qu'il ne trouve pas le fichier, ca doit avoir une autre strucure je pense mais je ne sais pas laquelle

    car quand je renomme avec mon ancien programme le fichier il l'écrit faux (les accent) mais quand je renomme depuis la ligne de commande il le renomme juste, il faudrait trouver comment faire le shell ren pour qu'il trouve le fichier?

  20. #20
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 175
    Points
    17 175
    Par défaut
    Salut

    En double quotant peut être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("ren ""D:\projetsvisualstudio\Reparations\Reparations\bin\Debug\ateliers_2.txt ateliers.txt"")
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. [W3C] Accents pas reconnus
    Par GrosB dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/08/2006, 14h30
  2. Accents pas pris en compte ?
    Par Emix0 dans le forum Général Java
    Réponses: 5
    Dernier message: 20/06/2006, 13h00
  3. domxml caractère qui passe pas
    Par gabychon dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/05/2006, 14h08
  4. Caractères spéciaux à ne pas passer dans une form
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/03/2006, 12h39
  5. [SQL]Caractères avec accents
    Par New dans le forum Oracle
    Réponses: 1
    Dernier message: 24/10/2005, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo