Vb.net Symbole s'affiche sous forme carré ഀ

Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 - 12 sept. 2016 à 19:46
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 13 sept. 2016 à 22:04
Bonjour,
je suis en train de créer une application qui contient tout les symboles (comme celle de Microsoft)
il y a en tous 65535 caractères , j'arrive a remplir la ListView (Large Icone) avec tous les caractères (chrW(numéro))
mot problème et le suivant :
certains caractères s'affiche sous forme carré ഀ
je c'est que le problème vient de la police, j'ai essayé tous les police qui se trouve dans Visual basic express 2010 :
"Aldhabi", "Algerian", "Andalus", "Anime Ace 2.0 BB", "Arabic Typesetting", "Arial", "Arial Unicode MS", "Arimo", "Baskerville Old Face", "Bauhaus 93", "Bell MT", "Berlin Sans FB", "Bernard MT", "Bodoni MT Poster", "Book Antiqua", "Bookman Old Style", "Bookshelf Symbol 7", "Britannic", "Broadway", "Brush Script MT", "Calibri", "Californian FB", "Cambria", "Cambria Math", "Candara", "Centaur", "Century", "Century Gothic", "Chiller", "Colonna MT", "Comic Sans MS", "Consolas", "Constantia", "Cooper", "Corbel", "Courier New", "DejaVu Sans", "DejaVu Sans Mono", "DejaVu Serif", "Fences Plain", "Footlight MT", "Franklin Gothic", "Freestyle Script", "FZLanTingHeiS-UL-GB", "Gabriola", "Garamond", "Gentium Basic", "Gentium Book Basic", "Georgia", "Haettenschweiler", "Harlow Solid", "Harrington", "High Tower Text", "Impact", "Informal Roman", "Jokerman", "Juice ITC", "Kristen ITC", "Kunstler Script", "Latin", "Lucida Bright", "Lucida Calligraphy", "Lucida Console", "Lucida Fax", "Lucida Handwriting", "Lucida Sans Unicode", "Magneto", "Matura MT Script Capitals", "Microsoft Sans Serif", "Mistral", "Modern No. 20", "Monotype Corsiva", "MS Outlook", "MS Reference Sans Serif", "MS Reference Specialty", "MT Extra", "Niagara Engraved", "Niagara Solid", "Old English Text MT", "Onyx", "OpenSymbol", "Origin", "Palatino Linotype", "Parchment", "Playbill", "Poor Richard", "Ravie", "Sakkal Majalla", "Segoe Print", "Segoe Script", "Segoe UI", "Segoe UI Emoji", "Segoe UI Symbol", "Showcard Gothic", "Simplified Arabic", "Simplified Arabic Fixed", "Sitka Banner", "Sitka Display", "Sitka Heading", "Sitka Subheading", "Sitka Small", "Sitka Text", "Snap ITC", "Stencil", "Symbol", "Tahoma", "Tempus Sans ITC", "Times New Roman", "Traditional Arabic", "Trebuchet MS", "Urdu Typesetting", "Verdana", "Viner Hand ITC", "Vivaldi", "Vladimir Script", "Webdings", "Wingdings", "Wingdings 2", "Wingdings 3"

il y a que "Cambria Math" qui affiche certains symboles mais il reste beaucoup qui reste sous forme carré ഀ
ma question est la suivante, existe il une police qui peut être inséré dans Visual Basic est qui affiche la totalité des symboles sous leurs vrais forme ?
Merci pour votre future aide

2 réponses

Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 2
12 sept. 2016 à 22:56
j'ai pris un symbole de Word (Je précise que la police utilisée dans ce document Word est :"Cambria Math"), j'ai copier le symbole dans une textbox
j'ai mis dans un bouton le code suivant label1.text = ASC(textbox1.text)
il m'affiche le code symbole
je cherche dans la ListView le code mais le symbole correspondant est un carré
je ne comprend pas, meme si la police de la listVieuw et du document Word et la même ("Cambria Math"), le symbole n'est pas afficher de la même facon
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié par vb95 le 13/09/2016 à 02:28
bonjour Karin.code
Tout d'abord peux-tu préciser quelle est le nom de cette application Microsoft ?
Ensuite qu'appelles-tu un symbole ? Est-ce un caractère que tu tapes au clavier ( exemple la lettre A majuscule ou le signe + du pavé numérique ?
Parlons maintenant des codes ASCII, Unicode(UTF16) et UTF32
Au début de l'informatique on a décidé qu'il y aurait 128 codes pour représenter les lettres, les codes de contrôles : le A majuscule a 65 comme code alors que la touche Echap qui est un code de contrôle a 27 comme code .
On s'est aperçu que cela était trop juste donc on a utilisé les codes de 0 à 256 ( code ASCII )
Mais les besoins étant grandissant on a donc décidé d'utiliser un nouveau code de 0 à 65535 . Et parmi ces 65536 codes certains ne sont pas utilisés par la langue française : je pense aux lettres grecques, russes par exemple ainsi qu'aux caractères arabes , japonais, chinois
donc cela explique à mon avis le fait que ce caractère n'apparaît point et est remplacé par un carré .
il y a aussi certains caractères spéciaux comme le symbole Sigma en mathématiques ou le symbole de l'infini en Mathématiques
Ton Pc qui est en langue française est capable d'afficher des caractères arabes ou chinois sans changer la langue du PC
Maintenant pourquoi Word et une listview n'ont pas les mêmes caractères : une listview nest qu'un contrôle somme toute basique bien que puissant en possibilités alors que Word est un logiciel complet et très puissant côté possibilités ! C'est comme si tu demandais à une 4L d'aller à la même vitesse qu'une Porsche
Cette réponse n'est que le reflet de ma pensée mais n'est par certifiée au niveau technique ( je paux me tromper)
en espérant t'aider !

Regarde cette page Internet : tu as plein de symboles mathématiques avec leurs codes Unicode : https://fr.wikipedia.org/wiki/Table_de_symboles_math%C3%A9matiques
0
Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 2
13 sept. 2016 à 10:59
Merci de m'avoir répondu, et merci pour l'explication (Merci pour le site aussi)
alors pour les caractères arabes , japonais, chinois et français il y a pas de problème ils s'affiche normalement
mais pour les caractères comme la flèche (numéro du symbole 61612) et aussi bien d'autre symbole il s'affiche sous forme de carré
je comprendrais que la langue a un rapport si ça avait été des lettre (A,B,C ..etc)
et aussi peux-tu m'expliquer pourquoi si je change la police certain symbole reprendre leur forme d'origine
désolé de te demander autant, tu m'a déjà beaucoup aider la dernière fois
0
Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 2
13 sept. 2016 à 11:36
dans le site que tu ma montré j'ai trouvé pour la flèche à gauche de code (2190, 27F5)
j'ai fait comme suite :
Label1.text = ChrW(2190) --> un carré s'affiche
Label2.text = chr(27F5) -> une erreur s'affiche pour le 5, j'ai effacer le 5 le code a changé de 27F5 à 27.0F -> la flèche s'affiché
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018
Modifié par vb95 le 13/09/2016 à 15:34
bonjour Karin.code

D'abord tu ne m'as pas répondu : peux-tu préciser quelle est le nom de cette application Microsoft ?
Il faut comprendre que certains caractères sont dans une police de caractères et pas dans une autre
Certains caractères spéciaux en mathématiques ( je repense au symbole de l'infini qui est un 8 couché horizontalement par exemple) s'afficheront dans une police spécifique alors qu'ils sont absents dans les polices standards usuelles !
Si un symbole s'affiche sous forme de carré c'est qu'il n'est pas disponible dans la police de caractères utilisée
tout ceci dépend de la langue qu'utilise le PC et de la police de caractères utilisée
Attention aussi : ChrW est différent de Chr ( le premier utilise les caractères Unicode alors que le second utilise les caractères ASCII

Autre chose : Chr et ChrW sont d'anciennes commandes VB 6 qui ont été gardées sous VB net ! Si tu veux programmer en vrai VB NET ( sans y importer des commandes de compatibilité VB 6) il faut aller dans Projet --> Références et supprimer l'entrée Microsoft.VisualBasic !
En même temps dans Projet --> Compiler met Option Strict et Option Explicit sur On : l'un t'oblige à déclarer toutes tes variables alors que l'autre t'oblige à faire de façon explicite les conversions de type

Reprends le lien du cours que je t'ai fourni pour y chercher des explications plus complètes

Tu as écrit :
Label1.text = ChrW(2190) --> un carré s'affiche
Label2.text = chr(27F5) -> une erreur s'affiche pour le 5, j'ai effacer le 5 le code a changé de 27F5 à 27.0F -> la flèche s'affiché


La première ligne est pour un caractère unicode ( de 0 à 65535) est n'est pas disponible
La seconde ligne avec chr est pour un caractère ASCII (0 à 256) : le 27F5 est trop grand ( attention notation en hexadécimal : les chiffres hexadécimaux en base 16 sont 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
A =10, B = 11 etc.... jusqu'à F = 15 : donc 21 en hexadécimal = 33 en décimal
En informatique il faut savoir compter en binaire et en hexadécimal ( pour le décimal tu le sais ...... enfin j'espère lol)
Le code change en 27.0F : 27 est le caractère d'échappement qui permet d'afficher d'autres caractères spécifiés après
Pour t'expliquer 97 affiche un e minuscule . Pour afficher un é minuscule tu feras 27 et XX ( XX représente le code supplémentaire pour afficher le é minuscule : je n'ai pas en tête la valeur exacte de XX pour afficher le é)

En espérant t'aider au mieux et bon courage
0
Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 2 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
13 sept. 2016 à 21:45
Bonsoir vb95

désolé de ne pas avoir répondu à ta question
le logiciel Microsoft est Microsoft Office (Word, Excel, ... etc)
et grâce à ton explication je comprend beaucoup mieux la différence entre Chr et ChrW
Merci
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 13/09/2016 à 17:03
Bonjour
un petit test
Pas tous les caractères semblables sont identiques
 Dim listcharacters As New List(Of String)
For iter = 0 To 65535
listcharacters.Add(Convert.ToChar(iter))
Next
If listcharacters(65521) = listcharacters(65522) Then
Stop
End If
'retirer les doublons
listcharacters = listcharacters.Distinct.ToList


quand je lance le debugger ne s'arrete pas, bien qu'à vue d'oeil
listcharacters(65521) et listcharacters(65522) semble les
memes
et aussi le listcharacters.count ne change pas à la suite
de
listcharacters = listcharacters.Distinct.ToList


0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
13 sept. 2016 à 20:51
bonsoir cs_ShayW
Si je comprends bien les caractères 65521 et 65522 sont tous les deux représentés par un petit carré mais ils n'appartiennent pas à la police de caractères utilisée au moment présent .
Merci pour cette précision : dis-moi si ma pensée te semble juste
Bonne soirée
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
13 sept. 2016 à 22:04
Bonsoir vb95

mais ils n'appartiennent pas à la police de caractères utilisée au moment présent
surement
à quoi sert il si on ne peut pas les utiliser ?


une occasion d'apprendre le chinois
0
Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 2
13 sept. 2016 à 21:44
Bonsoir cs_ShayW
Merci pour ta réponse
je l'ai déjà remarqué
au début je croyais que le carré étais juste un symbole qui se répéter beaucoup alors j'ai crée une condition, si le carré existe il sera supprimer de la liste mais ça n'a pas marcher, car même s'il il s'affiche sous forme carré il garde toujours ses propriétés (le code) , alors se que je voulais savoir esque c'est possible de leurs faire reprendre leur forme initiale
j'ai trouver se code :
https://msdn.microsoft.com/fr-fr/library/system.text.encoding.aspx
qui permet de rendre à un symbole sa forme d'origine (se code marche pour un document texte quand le symbole s'affiche sous forme "?"), mais j'arrive pas à l'intégrer a un listview ou listBox
0
Rejoignez-nous