gar6more
Messages postés19Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention28 août 2014
-
18 nov. 2011 à 15:49
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
21 nov. 2011 à 11:38
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 ?
cs_Le Pivert
Messages postés7893Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention19 mai 2023136 18 nov. 2011 à 16:10
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
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 18 nov. 2011 à 18:57
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
gar6more
Messages postés19Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention28 août 2014 21 nov. 2011 à 11:04
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 21 nov. 2011 à 11:34
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 21 nov. 2011 à 11:38
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