Jeux de caractères, notamment UTF -8
Thomas De Contes <[email protected]> Tue, 8 Sep 2020 19:34:57 +0200
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
Bonjour :-)
j'espère que vous n'hésiterez pas à me dire si des passages ne sont pas clairs, ou si par méconnaissance ou incompréhension j'ai écrit des affirmations fausses :-)
1
quand je faisais des sites web, à un moment donné je me suis penché sur la question du "meilleur" jeu de caractères à utiliser, que ça soit pour :
- la compatibilité avec le maximum de navigateurs
- la compatibilité avec mon ordinateur et mes outils d'édition de html
- le nombre et la pertinence des caractères disponibles, de sorte qu'il y ait besoin de revenir le moins souvent possible sur le jeu de caractères que j'aurai choisi pour cause de caractère manquant, avec toutes les questions que ça implique pour en choisir un autre (et jongler avec plusieurs)
j'ai choisi UTF-8,
à l'époque sur le 1er point c'etait pas tout à fait le meilleur, par exemple Latin-1 était meilleur,
mais sur le 3ème il était imbattable ! universel ! tout en étant compatible ascii !
et à en croire le choix majoritaire des "collègues", c'était le bon choix :-)
(c'était pas le cas dans tous les domaines : par exemple j'ai choisi le xhtml, qui apparemment a été laissé tomber)
2
utilisation de gnat
j'ai un peu de mal à comprendre comment ça marche :
https://gcc.gnu.org/onlinedocs/gcc-10.2.0/gnat_ugn/Character-Set-Control.html
par exemple, si je met les options "-gnati5 -gnatWs",
concrètement, comment gnat va t il lire mon code ?
avec Cyrillic pour les identifiants et Shift/JIS pour les littéraux de chaines de caractères ?
et si j'ai bien compris, dans les commentaires, tous les caractères non-ascii sont autorisés tout le temps (sauf NEL) ?
(y a t il autre chose que identifiants / littéraux / commentaires, où on écrit potentiellement comme on veut ?)
3
ce que je crois avoir compris, par contre, c'est comment ada et gnat envisagent UTF-8 :
les auteurs ont déjà fait plusieurs pas en direction d'unicode et UTF-8, notamment avec le paquetage Ada.Strings.UTF_Encoding (A.4.11), mais ne sont pas encore arrivés au bout
Ada.Strings.UTF_Encoding.UTF_8_String est d'un basique type String, c'est à dire basé sur Standard.Character, c'est à dire avec le jeu de caractères Latin-1
ça correspond à ce que j'ai testé :
- code source codé en UTF-8
- gnatmake avec l'option -gnatW8
- programme avec un littéral qui est transmis directement à GtkAda
- si on met de l'ascii (U+00 - U+7F),
tout va bien
- si on met des caractères non Latin-1 (> U+FF),
gnat repond "literal out of range of type Standard.Character"
- si on met des caractères Latin-1 non-ascii ("upper-half", U+80 - U+FF),
l'executable repond "Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()"
du coup, si on veut bénéficier du potentiel d'unicode, avec la possibilité d'utiliser n'importe quel caractère, sans avoir besoin de revenir sur aucun réglage le jour où l'envie nous prend (ou le besoin survient),
on doit utiliser l'option -gnatW8 combinée avec Standard.Wide_Wide_String
ce qui implique :
- quand on n'utilise que de l'ascii (l'immense majorité du temps) ça prend 4 fois plus de mémoire que nécessaire
- ça dois faire 2 conversions inutiles (puisqu'elles sont symétriques) :
- le compilateur doit convertir l'UTF-8 en Wide_Wide_String
- le programme doit convertir le Wide_Wide_String en UTF-8, avec Ada.Strings.UTF_Encoding.Wide_Wide_Strings.Encode, pour pouvoir le passer à GtkAda
4
l'idéal, ça serais de pouvoir écrire un programme en UTF-8, y compris des littéraux de chaines de caractères, et que ça soit interprété directement sous la forme Ada.Strings.UTF_Encoding.UTF_8_String, sans aucune conversion
(par exemple pour qu'on puisse le passer directement à GtkAda)
- est ce que dans les révisions futures, notamment la prochaine, vous continuez à vous rapprocher de ça ?
- y a t il un moyen de faire ça proprement des aujourd'hui ?
(idéalement quelque chose qui pourrais être accepté dans le code de gnat lui-même :-) bon là je crois que je rêve ;-) )
--
Téléassistance / Télémaintenance
http://invites.biocer.fr/thomas-de-contes/
_______________________________________________
Ada-france mailing list
[email protected]
https://mail.ada-france.org/cgi-bin/mailman/listinfo/ada-france