PeekANSI() - Lire de l'ASCII accentué en Unicode
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
ouaip , tain les nazes !!
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
Plus vraiment ...pour une fois que j'aurais pu être utileZorro a écrit :ps : si quelqu'un d'autre a XP chez lui (KCC ??? )
Il me reste des machines en XP mais ce n'est plus ma principale, j'ai trouvé un super systeme "ToutDansUn" qui va pas mal pour le remplacer
Je dirais même plus ...ouaip , tain les nazes !!
ouaip , tain les pures nazes !!
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
Nonps : si quelqu'un d'autre a XP chez lui (KCC ??? )
testez ce code vous devriez avoir l'affichage de ce caractere : "░" dans le débugger !! ?? (en compilant Pb 5.50 32 bits)
(XP Pro (dans une VM) sans aucune autre police installée)
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
ouaip, c'est chelou quand meme
tu peux tester ce code ? (compilation Pb 5.50 32bits )
chez moi ça affiche :
ps : mais bon j'aurai preféré un teste sur un vrais XP ...
et a tout hasard essaye la ligne commenté CharToOem
tu peux tester ce code ? (compilation Pb 5.50 32bits )
Code : Tout sélectionner
;
Declare.s ascii_sous_unicode(monmessageansi.s)
;
; debug Ascii_sous_unicode(chr(176) ) ; respecte les accents
;
OpenConsole("test")
For i=1 to 255
print (Ascii_sous_unicode(chr(i)))
Next i
Input()
CloseConsole()
Procedure.s Ascii_sous_unicode(MonMessageANSI.s)
MonMessageASCII.s = space(Len(MonMessageANSI.s))
;CharToOem_(@MonMessageANSI.s, @MonMessageASCII.s)
OemToChar_(@MonMessageANSI.s, @MonMessageASCII.s)
ProcedureReturn MonMessageASCII.s
EndProcedure
; Epb
chez moi ça affiche :
ps : mais bon j'aurai preféré un teste sur un vrais XP ...
et a tout hasard essaye la ligne commenté CharToOem
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
VoilàZorro a écrit :tu peux tester ce code ? (compilation Pb 5.50 32bits )
(et la fenêtre de debug de ton exemple précédent ramenée par dessus)
C'est un vrai XP Pro avec licence, installé depuis un CD officiel avec numéro de série officiel enregistré. etc.Zorro a écrit :ps : mais bon j'aurai préféré un teste sur un vrai XP ...
Le fait qu'il soit installé dans une VM (VirtualBox 5) ne change rien à son fonctionnement interne. Il n'a pas conscience du système hôte.
Pareil.Zorro a écrit :et a tout hasard essaye la ligne commenté CharToOem
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
haaa mais là c'est pas pareil !!
tu me demontre qu'en mode console mon code fonctionne tres bien sous XP !!
tout les caracteres graphique apparaissent , comme sous Seven !!
seul le debugger PB sous XP semble avoir un probleme ....et ne pas afficher le caractere
il est possible que le debugger PB sous windows plante a ce niveau ....(probleme de drapeau unicode au niveau compilateur ? )
mais du moment que ça marche en console, ça montre bien que la fonte existe et est bien compatible !!!
tout les caracteres graphique apparaissent , comme sous Seven !! (et comme sous DOS)
et maintenant a tout hasard essaye celui la
tu me demontre qu'en mode console mon code fonctionne tres bien sous XP !!
tout les caracteres graphique apparaissent , comme sous Seven !!
seul le debugger PB sous XP semble avoir un probleme ....et ne pas afficher le caractere
il est possible que le debugger PB sous windows plante a ce niveau ....(probleme de drapeau unicode au niveau compilateur ? )
mais du moment que ça marche en console, ça montre bien que la fonte existe et est bien compatible !!!
tout les caracteres graphique apparaissent , comme sous Seven !! (et comme sous DOS)
et maintenant a tout hasard essaye celui la
Code : Tout sélectionner
; modifié Zorro
Enumeration
#Win
#list
EndEnumeration
Declare.s Ascii_sous_unicode(MonMessageANSI.s)
Enumeration
#Font
EndEnumeration
LoadFont(#font,"Lucida",10)
SetGadgetFont(#PB_Default, FontID(#font))
debug Ascii_sous_unicode(chr(203) ) ; respecte les accents
OpenWindow(#Win , 0, 0, 880, 500, "ascii...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(#list, 0, 0, 880, 500, "0..31", 110,#PB_ListIcon_GridLines)
AddGadgetColumn(#list, 1, "32..63", 110)
AddGadgetColumn(#list, 2, "64..95", 110)
AddGadgetColumn(#list, 3, "96..127", 110)
AddGadgetColumn(#list, 4, "128..159", 110)
AddGadgetColumn(#list, 5, "160..191", 110)
AddGadgetColumn(#list, 6, "192..223", 110)
AddGadgetColumn(#list, 7, "224..255", 110)
ii.s=chr(10)
For i=0 To 31
i$=Ascii_sous_unicode(chr(i))
i2$=Ascii_sous_unicode(chr(i+32))
i3$=Ascii_sous_unicode(chr(i+64))
i4$=Ascii_sous_unicode(chr(i+96))
i5$=Ascii_sous_unicode(chr(i+128))
i6$=Ascii_sous_unicode(chr(i+160))
i7$=Ascii_sous_unicode(chr(i+192))
i8$=Ascii_sous_unicode(chr(i+224))
AddGadgetItem(#list, -1,Str(i)+" "+i$+ii.s+Str(i+32)+" "+i2$+ii.s+ Str(i+64)+" "+i3$+ii.s+ Str(i+96)+" "+i4$+ii.s+ Str(i+128)+" "+i5$+ii.s+ Str(i+160)+" "+i6$+ii.s+ Str(i+192)+" "+i7$+ii.s+Str(i+224)+" "+i8$+#LF$)
Next i
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Procedure.s Ascii_sous_unicode(MonMessageANSI.s)
MonMessageASCII.s = space(Len(MonMessageANSI.s))
;CharToOem_(@MonMessageANSI.s, @MonMessageASCII.s)
OemToChar_(@MonMessageANSI.s, @MonMessageASCII.s)
ProcedureReturn MonMessageASCII.s
EndProcedure
; Epb
Dernière modification par Zorro le jeu. 15/sept./2016 8:30, modifié 1 fois.
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
...Zorro a écrit :et maintenant a tout hasard essaye celui la
PS. Pour ton premier exemple j'avais aussi fait l'essai en utilisant le fonte Consolas (installé exprès): même résultat.
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
Merci
bon ça plante .... mais pas en mode console .... !!! cherchez l'erreur
peut etre l'api utilisé ....
bon ça plante .... mais pas en mode console .... !!! cherchez l'erreur
peut etre l'api utilisé ....
Minimum supported client
Windows 2000 Professional [desktop apps only]
Dernière modification par Zorro le mer. 14/sept./2016 17:30, modifié 1 fois.
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
J'ai aussi changé la police utilisée par le débug (graphique) sans effet avec les polices fournies.
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
c'est je pense un probleme de selection de page de code
j'avais vu passer un code a ce sujet... faudrai qu je recherche
ce code , de memoire, permettait le choix de la page de code (850,1252 ect...)
explication ici :
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
de toute façons, tout ceci est obsolète ,en PB on utilise l'unicode le UTF8, et ça roule !
qu'elle idée d'utiliser des caractères désués (bon il marche ne console c'est deja ça ... )
j'avais vu passer un code a ce sujet... faudrai qu je recherche
ce code , de memoire, permettait le choix de la page de code (850,1252 ect...)
explication ici :
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
de toute façons, tout ceci est obsolète ,en PB on utilise l'unicode le UTF8, et ça roule !
qu'elle idée d'utiliser des caractères désués (bon il marche ne console c'est deja ça ... )
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
C'est quand je vois ce genre de sujet que j'ai l'impression d'être un dinosaure. (Attention souvenirs de vieux combattant) Que de temps passé, que de travail sur des problèmes de normes, de choix industriels foireux, avec le DOS et ses pages de codes débiles, l'ASCII bancal qui hésitait entre texte et codes de commande (beep ! ), les terminaux genre Minitel et l'ANSI mode BBS avec ses astuces de sioux Esc[s;Esc[u; et aujourd'hui l'unicode qui n'en finit pas de devenir un standard et qui au final ne l'est plus du tout ..
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
c'est clair qu'il y a de quoi perdre son latin
c'est une forme d'obsolescence programmé !
c'est une forme d'obsolescence programmé !
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
Je vais t'en faire une obsolescence programmée...
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
Il manque donc une ligne entre "Else" et "EndIf". C'est celle-là qu'il suffit juste d'insérer :
Elle évite de devoir préciser la taille de la chaîne ASCII.
Je n'ai pas le temps nécessaire pour mettre à jour le code. Je relis le sujet, j'y vois beaucoup de superflu hors sujet. Je tâcherai de perdre (et faire perdre) un précieux temps à le nettoyer.
On a donc au final un système d'affichage qui importe de l'ASCII dans un programme Unicode, avec un exemple utilisant une fonte "lucida" quasi-omniprésente sur la plupart des OS, et quasi-complète (il manque 16 caractères étendus locaux, c'est-à-dire propre à chaque pays).
Cela permet d'exécuter d'anciens programmes à affichage "texte" et de les voir afficher sur nos écrans actuels avec tous les avantages techniques desquels l'on dispose (changement d'échelle, impression digne de ce nom, incrustation graphique, etc...)
Code : Tout sélectionner
String = PeekANSI(*A, FindMemoryByte(*A, 0) - *A)
Je n'ai pas le temps nécessaire pour mettre à jour le code. Je relis le sujet, j'y vois beaucoup de superflu hors sujet. Je tâcherai de perdre (et faire perdre) un précieux temps à le nettoyer.
On a donc au final un système d'affichage qui importe de l'ASCII dans un programme Unicode, avec un exemple utilisant une fonte "lucida" quasi-omniprésente sur la plupart des OS, et quasi-complète (il manque 16 caractères étendus locaux, c'est-à-dire propre à chaque pays).
Cela permet d'exécuter d'anciens programmes à affichage "texte" et de les voir afficher sur nos écrans actuels avec tous les avantages techniques desquels l'on dispose (changement d'échelle, impression digne de ce nom, incrustation graphique, etc...)
Re: PeekANSI() - Lire de l'ASCII accentué en Unicode
Bonjour à tous
Pour résumer, le codage des caractères en informatique et en télécommunication, est l’opération qui associe une table de codage comprenant toute la combinatoire possible et une police de représentation. C’est ce qu’on appelle un jeu de caractères. Afin d’éviter une floraison de jeux de caractères, des standards ont été crées (jeux de caractères codés.) On peut de cette manière cacher le sens de l'information, soit en créant une table de codage particulière soit en créant un police particulière (voir chiffrement)
Les problèmes d'encodage de caractères sont apparus dès que des encodages EBCDIC et ASCII sont apparus dans les années 1960.
La mise en réseau de divers matériels électroniques utilisant des conventions différentes pour le codage des caractères a accentué le problème.
Toutefois, avec l'émergence d'Unicode, et celle d'indicateurs d'encodage, le problème pourrait se réduire à un problème d'interopérabilité.
Voici les types de jeux de caractères codés utilisés par pays
Jeux de caractères codés populaires, par pays
Sur Internet, l'UTF-8 et l'ASCII sont les deux encodages les plus populaires depuis 20109. En juillet 2012, leur utilisation est estimée conjointement à 80 % (UTF-8: 65 % et ASCII: 15 %), contre 10 % environ pour les encodages occidentaux (latin1) et le solde (< 10 %) pour tous les autres.
Amérique
États-Unis
• ISO 646 ;
o ASCII.
Canada
• ASCII, standard de compatibilité, sans accent ;
• ISO 8859-1 ;
• Unicode, voir aussi UTF-8.
Europe
Union européenne
• UTF-8, notamment utilisé par http://www.europa.eu/.
France
• ISO 646-variante de référence internationale (IRV, alias ASCII), standard de compatibilité, sans accent, pour le développement de logiciel en anglais ;
• « Jeu de caractères graphiques français pour la langue française », 94 caractères codés sur 7 bits, normalisé ISO/CEI 646-69 le 1er juin 1983, et normalisé AFNOR NF Z 62 010 en 1982. Aujourd'hui désuet, mais activable par séquence d'échappement ;
o standard de compatibilité ;
o dans l'une de ses deux variantes françaises (AFNOR) ;
o standard du minitel (voir viewdata) ;
• ISO-2022 peu utilisé en France mais reprend tous les caractères français ;
• CP850 à l'époque du DOS ;
• Windows-1252, originaire de Microsoft Windows, encore appelé CP1252 ou Ansinew ;
• ISO 8859-1, avant l'euro ;
• ISO 8859-15, après l'euro ;
• Unicode, voir aussi UTF-8 (reprend tous les caractères des jeux de code précédent).
Grèce
• UTF-8 ;
• ISO 8859-7 (sans l’euro).
Roumanie
• ISO 8859-2 ;
• ISO 8859-16 ;
• UTF-8.
Lituanie
• Windows-1257, pour Windows, utilisé par http://www.lrv.lt/ ;
• UTF-8, utilisé pour la langue française par http://www.president.lt/fr/.
Russie
• KOI8-R ;
• UTF-8.
Ukraine, Bulgarie
• KOI8-U ;
• UTF-8.
Afrique
Maghreb
• UTF-8, utilisé sur http://www.maroc.ma/portailinst/Ar ;
• Windows-1256, utilisé par exemple par http://www.almaghribia.ma/.
Asie
• ISCII (alphasyllabaires utilisés en Inde, au Sri Lanka et au Bangladesh) ;
• VISCII (alphabet latin moderne du vietnamien) ;
• TIS-620 (écriture thaïe) ;
• KSC 5601 (alphabet hangûl du coréen) ;
• GB18030 (écriture sinographique simplifiée des langues chinoises) ;
• Big5 (écriture sinographique traditionnelle des langues chinoises) ;
• Shift-JIS (syllabaires et écriture sinographique traditionnelle des langues japonaises).
Autres codages de caractères populaires
• Codage SMS ;
• ISO 646 : ASCII ;
• EBCDIC ;
• ISO 8859 : ISO 8859-1, ISO 8859-2, ISO 8859-3, ISO 8859-4, ISO 8859-5, ISO 8859-6, ISO 8859-7, ISO 8859-8, ISO 8859-9, ISO 8859-10, ISO 8859-11, ISO 8859-13, ISO 8859-14, ISO 8859-15, ISO 8859-16 ;
• Jeux de caractères codés DOS : CP437, CP737, CP850, CP852, CP855, CP857, CP858, CP860, CP861, CP863, CP865, CP866, CP869 ;
• Jeux de caractères codés Windows : Windows-1250, Windows-1251, Windows-1252, Windows-1253, Windows-1254, Windows-1255, Windows-1256, Windows-1257, Windows-1258 ;
• VISCII ;
• KOI8-R, KOI8-U ;
• TIS-620 ;
• ISCII ;
• ISO 2022, EUC ;
o Big5 : HKSCS ;
o Guobiao : GB2312, GBK, GB18030 ;
o Shift-JIS ;
• ISO/CEI 10646 : Unicode, voir aussi UTF-8.
Pour résumer, le codage des caractères en informatique et en télécommunication, est l’opération qui associe une table de codage comprenant toute la combinatoire possible et une police de représentation. C’est ce qu’on appelle un jeu de caractères. Afin d’éviter une floraison de jeux de caractères, des standards ont été crées (jeux de caractères codés.) On peut de cette manière cacher le sens de l'information, soit en créant une table de codage particulière soit en créant un police particulière (voir chiffrement)
Les problèmes d'encodage de caractères sont apparus dès que des encodages EBCDIC et ASCII sont apparus dans les années 1960.
La mise en réseau de divers matériels électroniques utilisant des conventions différentes pour le codage des caractères a accentué le problème.
Toutefois, avec l'émergence d'Unicode, et celle d'indicateurs d'encodage, le problème pourrait se réduire à un problème d'interopérabilité.
Voici les types de jeux de caractères codés utilisés par pays
Jeux de caractères codés populaires, par pays
Sur Internet, l'UTF-8 et l'ASCII sont les deux encodages les plus populaires depuis 20109. En juillet 2012, leur utilisation est estimée conjointement à 80 % (UTF-8: 65 % et ASCII: 15 %), contre 10 % environ pour les encodages occidentaux (latin1) et le solde (< 10 %) pour tous les autres.
Amérique
États-Unis
• ISO 646 ;
o ASCII.
Canada
• ASCII, standard de compatibilité, sans accent ;
• ISO 8859-1 ;
• Unicode, voir aussi UTF-8.
Europe
Union européenne
• UTF-8, notamment utilisé par http://www.europa.eu/.
France
• ISO 646-variante de référence internationale (IRV, alias ASCII), standard de compatibilité, sans accent, pour le développement de logiciel en anglais ;
• « Jeu de caractères graphiques français pour la langue française », 94 caractères codés sur 7 bits, normalisé ISO/CEI 646-69 le 1er juin 1983, et normalisé AFNOR NF Z 62 010 en 1982. Aujourd'hui désuet, mais activable par séquence d'échappement ;
o standard de compatibilité ;
o dans l'une de ses deux variantes françaises (AFNOR) ;
o standard du minitel (voir viewdata) ;
• ISO-2022 peu utilisé en France mais reprend tous les caractères français ;
• CP850 à l'époque du DOS ;
• Windows-1252, originaire de Microsoft Windows, encore appelé CP1252 ou Ansinew ;
• ISO 8859-1, avant l'euro ;
• ISO 8859-15, après l'euro ;
• Unicode, voir aussi UTF-8 (reprend tous les caractères des jeux de code précédent).
Grèce
• UTF-8 ;
• ISO 8859-7 (sans l’euro).
Roumanie
• ISO 8859-2 ;
• ISO 8859-16 ;
• UTF-8.
Lituanie
• Windows-1257, pour Windows, utilisé par http://www.lrv.lt/ ;
• UTF-8, utilisé pour la langue française par http://www.president.lt/fr/.
Russie
• KOI8-R ;
• UTF-8.
Ukraine, Bulgarie
• KOI8-U ;
• UTF-8.
Afrique
Maghreb
• UTF-8, utilisé sur http://www.maroc.ma/portailinst/Ar ;
• Windows-1256, utilisé par exemple par http://www.almaghribia.ma/.
Asie
• ISCII (alphasyllabaires utilisés en Inde, au Sri Lanka et au Bangladesh) ;
• VISCII (alphabet latin moderne du vietnamien) ;
• TIS-620 (écriture thaïe) ;
• KSC 5601 (alphabet hangûl du coréen) ;
• GB18030 (écriture sinographique simplifiée des langues chinoises) ;
• Big5 (écriture sinographique traditionnelle des langues chinoises) ;
• Shift-JIS (syllabaires et écriture sinographique traditionnelle des langues japonaises).
Autres codages de caractères populaires
• Codage SMS ;
• ISO 646 : ASCII ;
• EBCDIC ;
• ISO 8859 : ISO 8859-1, ISO 8859-2, ISO 8859-3, ISO 8859-4, ISO 8859-5, ISO 8859-6, ISO 8859-7, ISO 8859-8, ISO 8859-9, ISO 8859-10, ISO 8859-11, ISO 8859-13, ISO 8859-14, ISO 8859-15, ISO 8859-16 ;
• Jeux de caractères codés DOS : CP437, CP737, CP850, CP852, CP855, CP857, CP858, CP860, CP861, CP863, CP865, CP866, CP869 ;
• Jeux de caractères codés Windows : Windows-1250, Windows-1251, Windows-1252, Windows-1253, Windows-1254, Windows-1255, Windows-1256, Windows-1257, Windows-1258 ;
• VISCII ;
• KOI8-R, KOI8-U ;
• TIS-620 ;
• ISCII ;
• ISO 2022, EUC ;
o Big5 : HKSCS ;
o Guobiao : GB2312, GBK, GB18030 ;
o Shift-JIS ;
• ISO/CEI 10646 : Unicode, voir aussi UTF-8.
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.