Problème avec accents et caractères spéciaux

Signaler
Messages postés
19
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
28 août 2014
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

J'ai réalisé une application qui lit les données contenues dans des fichiers CSV d'un dossier, et qui les envoie par le port com à un autre pc qui lui tourne sous DOS.
J'ai juste un problème avec les caractères accentués. Le pc sous DOS n'utilise pas les même tables, et les caractères accentués sont transcrit sous la forme d'un carré. J'ai essayé de transformer mes chaines de caractères avec divers fonctions avant de les envoyer, mais j'ai toujours ce problème.
Est ce que vous avez une idée ?

Merci

Gar6more

5 réponses

Messages postés
7359
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
1 mai 2021
122
Bonjour,
Essaie ceci:

Imports System.IO
Imports System.Text
 Dim monStreamReader As StreamReader = New System.IO.StreamReader(fichier, Encoding.Default) 'Stream pour la lecture avec caractères accentués du fichier



@+ Le Pivert
Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155
Bonjour,

Si ta machine est sous DOS, je pense que la page de code à utiliser est la 850.
Regardes les insormations concernant l'encodage des caractères (LePivert t'as déjà donné la classe : Encoding).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
19
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
28 août 2014

Tout d'abord merci pour votre aide.

J'ai déjà essayer cela. Voila une fonction qui convertit en IBM850 avant d'envoyer via le port COM. Mais là encore, j'obtient pas les caractères accentués.


Function ConvertStringToDOS(ByVal strWindow As String, ByVal id As Integer) As String

Dim unicodeString As String = strWindow

' Create two different encodings.
Dim [unicode] As Encoding = Encoding.Unicode
Dim IBM850 As Encoding = Encoding.GetEncoding(720)


' Convert the string into a byte[].
Dim unicodeBytes As Byte() = [unicode].GetBytes(unicodeString)


' Perform the conversion from one encoding to the other.
Dim IBM850Bytes As Byte() = Encoding.Convert([unicode], IBM850, unicodeBytes)


' Convert the new byte[] into a char[] and then into a string.
' This is a slightly different approach to converting to illustrate
' the use of GetCharCount/GetChars.

Dim IBM850Chars(IBM850.GetCharCount(IBM850Bytes, 0, IBM850Bytes.Length) - 1) As Char
IBM850.GetChars(IBM850Bytes, 0, IBM850Bytes.Length, IBM850Chars, 0)
Dim IBM850String As New String(IBM850Chars)

' Display the strings created before and after the conversion.
ConvertStringToDOS = IBM850String

End Function


Gar6more
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,

Je me rappelle m'être assez durement "frotté" à un problème de ce genre il y a plusieurs années.
J'avais finalement adopté la solution suivante :
1) relever le codepage du dos utilisé (il faut le connaître en vue de le restituer ensuite)
2) selectionner (sous DOS) le codepage adéquat pour l'affichage sur la machine windows utilisatrice, à l'aide de
mode CON CP SELECT=......(la valeur utile)
3) rediriger la sortie du dos vers un fichier texte (par un pipe genre > C:\coco.txt )
4) rétablir la valeur originale du codepage du DOS (celle en 1) )
5) lire le fichier texte C:\coco.txt

Attention : les codepages ne sont pas les mêmes partout (diffèrent selon les pays)
C'est tout ce que j'avais trouvé
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Ah ...
Mais toi, c'est l'inverse, que tu fais !
Le principe est le même, mais il te faut alors connaîtrre le codepage de l'utilisateur final !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient