CharSet - StringBuilder

Signaler
Messages postés
412
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 août 2007
-
Messages postés
63
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
16 mai 2007
-
Hello!!

J'ai un problème, j'ai un stringbuilder qui est rempli par une application C++, alimentée par un tableau de byte, et je reçois des caractères unicodes dans le stringbuilder alors que je dois travailler en byte, donc en ascii de 0 à 255 et je reçois des valeurs comme 3280 etc.

Alors comment puis-je faire pour changer le charset du stringbuilder pour utiliser uniquement de l'ascii, puisque c'est ce que l'application C++ met dedans..

Help Please!!

-------------------------
Trambert le vert

11 réponses

Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
C'"est bien difficile à comprendre ton problème, on ,enfin je vois pas bien comment tout cela marche.
Avec un bout de code, ca serait plus simple.

comme ca, je dirais,( sans y connaitre grand chose):
soit ton appli c++ ne renvoie pas des caratères ascii,
soit il y a un problème avec string builder.

comment ton appli c++ envoie les caractères,
n'est t'il pas possible de faire une conversion de la valeur unicode en ascii avant d'alimenter ton string builder ( voir dans namespace System.Text je pense)

Apres, à priori, à moins d'avoir rencontrer exactement le meme probleme, et donc de voir le probleme avec toutes ses caractèrisituqes, il me semble bien difficile de répondre. Complète un peu la cause du probleme .
Messages postés
412
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 août 2007

Ben l'appli C# file un tableau de charactères automatiquement casté dans le stringbuilder en unicode.

Et rien a faire pour empêcher ça snif..

A moins de faire son propre stringbuilder?

-------------------------
Trambert le vert
Messages postés
412
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 août 2007

Le big problème c'est que les string sont en unicode...

Qqun saurait comment faire pour avoir une string en ascii?

-------------------------
Trambert le vert
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Avec la classe Encoding, tu ne peux rien faire ?

Encoding.Convert(Encoding.Unicode, Encoding.ASCII,  myBytes);


Je n'ai jamais testé, mais j'essaie juste de te donner des idées.

Mx
Messages postés
412
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 août 2007

Malheureusement, déjà essayé, et ça me converti tout les caractères spéciaux vers le même caractère, donc ça fonctionne pas :(

-------------------------
Trambert le vert
Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010

c normal que les carateres spéciaux passent à l'as en passant en ASCII, l'ascii possede 255 caracteres alors qu'unicode en possede ... un peu plus :big) ... tes caracteres spéciaux dependent du jeu de caracteres ascii que tu utilise!
Messages postés
412
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 août 2007

Ouais ça je suis au courant, mais est-ce que quelqu'un peut m'expliquer pourquoi les caractère qui sortent de l'appli C++ sont entre 0 et 255, et que dans mon stringbuilder je reçois des caractère unicode genre 3280 !?

Je me pête la tête contre le mur..

-------------------------
Trambert le vert
Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010

c'est une question de standards...
C# utilise l'unicode car c'est le standard actuel et c++ l'ascii ...

a mon avis le plus simple a faire c'est d'utiliser tes caracteres unicode en c++ (jette un oeil au types wchar, w..., etc... ;) )
Messages postés
412
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 août 2007

Bon ben c'est toujours pas clair on dirait lol

Dans l'appli C++ c'est un tableau de byte.. donc de 0 à 255.. et vu qu'un tableau de byte c'est pareil qu'un tableau de char en c++, ça me met ça dans une string, mais quand la string arrive côté C# elle est en unicode..

Donc la question est : Est-ce qu'il y a un moyen de changer le charset des string/stringbuilder en ascii plutot qu'en unicode..
Sans passer par une structure...

-------------------------
Trambert le vert
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
As tu résolu ton Pb car je suis confronté au même...

En clair, je donne le caractère € (ou tout autre caractère de la table ASCII étendue) et il faut que ça me retourne 128 (ou l'équivalent pour les autres)

David, à VERSAILLES
Messages postés
63
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
16 mai 2007

ouai moi aussi j'ai le meme probleme
il faut aparament un Char qui ne represente pas un Char unicode mais plutot un Char qui prend en compte la norme iso-8859-1
mais le pb c'est que je ne sais pas comment faire si ta trouver quelques choses fait nous le partager
merci