Caractères spéciaux

yannou24 Messages postés 27 Date d'inscription lundi 12 septembre 2005 Statut Membre Dernière intervention 1 février 2006 - 28 oct. 2005 à 18:10
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 29 oct. 2005 à 21:19
Bonjour à tous

Mes 2 ou 3 derniers pbs ont été résolus assez rapidement sur ce site alors je tente ma chance à nouveau.
J'explique : j'ai une table dans ma base de données qui contient des caractères spéciaux du type '?', 'Δ', 'β', 'Я', '¥' etc...
Dans mon prog, j'ouvre ma table grace a 1 objet adodc.recordset et je recupère le champ 'char' de ma table. Le souci c'est que je m'apercois que les données passent mal dans la mesure où les caractères spéciaux sont transformés soit en lettre 'S', soit dans la plupart des cas en '?'.
Quand je fais text1.text = objet_ado!char là ou le m'attends trouver '?' et ben j'ai '?'.
Voila mon pb.
J'ai besoin d'aide svp !!

merci d'avance

4 réponses

MaxSoldier Messages postés 289 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 28 février 2009 2
28 oct. 2005 à 22:17
Essais de stocker leur valeur ASCII, puis de les reconvertir.
0
yannou24 Messages postés 27 Date d'inscription lundi 12 septembre 2005 Statut Membre Dernière intervention 1 février 2006
28 oct. 2005 à 23:51
ya rien de plus simple et de moins fastidieux ??
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
29 oct. 2005 à 21:17
Bonsoir,

JE connais pas la réponse, mais j'ai une piste pour la compréhension...


LE problème des "?" vient de la conversion en interne de la chaîne de caractère sur 1 octet. Or chaque caractère de la chaîne du départ est codé sur 2 octets, afin de permettre l'affichage des caractères spéciaux : c'est l'unicode.
Le "?" indique justement que les caractères spéciaux ne peuvent pas être converti correctement...

Voilà, pour l'explication... Maintenant, je ne sais quel élément converti la chaîne du départ (contenant les caractères spéciaux). JE veux dire par là, quand il y a une affectation d'une chaîne avec une variable, selon le type de la variable, la transmission peut se faire sur seulement 1 octet, au lieu de 2.


Sur un exemple réduit, tu peux bien visualiser le problème, en faisant une feuille avec deux Text Box, et un bouton.
Dans le bouton, mets le code suivant :
m = TextBox1.Text
MsgBox TextBox1.Text
TextBox2.Text = m

Puis, si tu mets dans textbox1 le texte : УФЦўΔΓ
Msgbox lui converti en interne sur 1 octet l'affichage et renvoi : ?????G
Ensuite text2.text quand a lui récupère correctement les caractères spéciaux de text1.

=

Sinon, une fonction pouvant être utile, c'est "StrConv" ... (regarde l'aide)

ou encore, l'utilisation d'un tabaleau Byte qui contiendra directement la chaîne... mais je ne sais pas comment cela peut s'agencer dans ton projet...

=

Voilà, c'est pas la réponse, mais juste une piste...

En espérant que cela t'aidera,

Amicalement,
Us.
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
29 oct. 2005 à 21:19
oupss... У ... etc... était des caractères spéciaux clairs à l'origine... (et ont été convertis en leurs valeurs ASCII, par le site)
0
Rejoignez-nous