J'ai un soucis pour lequel je ne trouve pas de solution :
J'ai une liaison série avec un périphérique (caméra). Je communique donc via
une RS232 en envoyant des caractères vers mon périphérique.
Mais certain caractères ne correspondent pas au résultat attendu !!
le genre :
char Car = '\0x88';
ou
char Car = '\u0088';
ou
string Chaine = "\x88";
ne correpondent en rien au caractère dont le code ASCII est 0x88 (ou 136 en
décimal).
Certains code passe très bien ( char Car = '\0xFF'; donne bien 'ÿ').
le bon vieux Chr du basic, j'ai bien le résultat attendu !!
Zazar
Bonsoir,
J'ai un soucis pour lequel je ne trouve pas de solution : J'ai une liaison série avec un périphérique (caméra). Je communique donc
via
une RS232 en envoyant des caractères vers mon périphérique. Mais certain caractères ne correspondent pas au résultat attendu !!
le genre : char Car = ' x88'; ou char Car = 'u0088'; ou string Chaine = "x88";
ne correpondent en rien au caractère dont le code ASCII est 0x88 (ou 136
en
décimal).
Certains code passe très bien ( char Car = ' xFF'; donne bien 'ÿ').
Qqun a t il une idée ?
Comme l'a dit ambassadeur kosh, c'est une histoire d'encodage. Quand vous faîtes ' x88', vous obtenez le caractère 0x88 de la table unicode et non pas de la table ascii. Au passage, au delà du caractère 127, on ne parle plus d'ascii mais d'ascii étendu, et il en existe plusieurs versions : à priori vous parlez de la version Ansi (caractère 255 = ÿ). Les tables unicode et ansi ont des caractères en commun, mais pas tous. Dans l'espace de nom System.Text, vous avez des classes vous permettant de convertir les chaînes de caractères en tableaux de byte et vice-versa en fonction de l'encodage choisi. (L'encodage Ansi correspondant à Encoding.Default sous un windows européen). Si la fonction chr de VB vous donne le bon résultat, c'est qu'elle renvoie non pas le caractère unicode, mais le caractère dans l'encodage par défaut du système, en ANSI donc.
-- Zazar
Bonsoir,
J'ai un soucis pour lequel je ne trouve pas de solution :
J'ai une liaison série avec un périphérique (caméra). Je communique donc
via
une RS232 en envoyant des caractères vers mon périphérique.
Mais certain caractères ne correspondent pas au résultat attendu !!
le genre :
char Car = ' x88';
ou
char Car = 'u0088';
ou
string Chaine = "x88";
ne correpondent en rien au caractère dont le code ASCII est 0x88 (ou 136
en
décimal).
Certains code passe très bien ( char Car = ' xFF'; donne bien 'ÿ').
Qqun a t il une idée ?
Comme l'a dit ambassadeur kosh, c'est une histoire d'encodage.
Quand vous faîtes ' x88', vous obtenez le caractère 0x88 de la table
unicode et non pas de la table ascii. Au passage, au delà du caractère 127,
on ne parle plus d'ascii mais d'ascii étendu, et il en existe plusieurs
versions : à priori vous parlez de la version Ansi (caractère 255 = ÿ).
Les tables unicode et ansi ont des caractères en commun, mais pas tous. Dans
l'espace de nom System.Text, vous avez des classes vous permettant de
convertir les chaînes de caractères en tableaux de byte et vice-versa en
fonction de l'encodage choisi. (L'encodage Ansi correspondant à
Encoding.Default sous un windows européen).
Si la fonction chr de VB vous donne le bon résultat, c'est qu'elle renvoie
non pas le caractère unicode, mais le caractère dans l'encodage par défaut
du système, en ANSI donc.
J'ai un soucis pour lequel je ne trouve pas de solution : J'ai une liaison série avec un périphérique (caméra). Je communique donc
via
une RS232 en envoyant des caractères vers mon périphérique. Mais certain caractères ne correspondent pas au résultat attendu !!
le genre : char Car = ' x88'; ou char Car = 'u0088'; ou string Chaine = "x88";
ne correpondent en rien au caractère dont le code ASCII est 0x88 (ou 136
en
décimal).
Certains code passe très bien ( char Car = ' xFF'; donne bien 'ÿ').
Qqun a t il une idée ?
Comme l'a dit ambassadeur kosh, c'est une histoire d'encodage. Quand vous faîtes ' x88', vous obtenez le caractère 0x88 de la table unicode et non pas de la table ascii. Au passage, au delà du caractère 127, on ne parle plus d'ascii mais d'ascii étendu, et il en existe plusieurs versions : à priori vous parlez de la version Ansi (caractère 255 = ÿ). Les tables unicode et ansi ont des caractères en commun, mais pas tous. Dans l'espace de nom System.Text, vous avez des classes vous permettant de convertir les chaînes de caractères en tableaux de byte et vice-versa en fonction de l'encodage choisi. (L'encodage Ansi correspondant à Encoding.Default sous un windows européen). Si la fonction chr de VB vous donne le bon résultat, c'est qu'elle renvoie non pas le caractère unicode, mais le caractère dans l'encodage par défaut du système, en ANSI donc.