Citation:
Envoyé par
Klaim
A ce que je sache, au final la taille des données n'a rien a voir avec l'encodage choisis (UTF-8,16 ou 32 ou autres).
Donc que l'interface expose char ou wchar_t, ça ne donne strictement aucune guarantie sur l'encodage.
Donc je vois pas bien ce que ça changerai pour toi?
Si ce n'est que, dans le cas de l'UTF16 ou de l'UTF32, tu ne peux (à moins que je n'aie vraiment mal compris leur mode de fonctionnement) pas avoir la certitude qu'il n'y aura jamais 8 bits représentant une valeur nulle, qui serait alors considéré, avec un char 8bits, comme étant... la fin de la chaine.
Cela pourrait entrainer des conséquences plus ou moins facheuses dans certaine situations, non :question:
Citation:
Envoyé par
JolyLoic
[snip]
Je ne suis pas convaincu que ce soit une si bonne manière de faire... Mais je n'ai pas forcément mieux à proposer :)
Je préfère généralement avoir au cœur de mon programme un seul type de chaîne de caractères, décidé une bonne fois pour toutes, et par contre, aux frontières (lecture/écriture de ficheirs, par exemple, mais aussi envoi sur le réseau...) de gérer explicitement l'encoding (ou plutôt les encodings) pris en compte.
Tout dépend de ce que tu veux faire...
Pour n'importe quelle application "classique", j'aurais aussi également tendance à privilégier l'utilisation de la std::string pour la partie métier.
Mais, dans le cadre d'une bibliothèque IHM, par exemple, il peut etre intéressant de définir un encodage "global", adapté à l'utilisation qui en est faite, à la compilation, non :question:
Citation:
Je pense que tu as bien cherché.
Merci pour la confirmation ;)
Citation:
Elle supportent donc déjà UTF-8 ;)
Fatalement :D
Citation:
Globalement, le support de différents encodage était perçu comme quelque-chose de très complexe, et pour laquelle on manquait globalement d'expérience (ou plutôt, il y avaient plein d'expériences individuelles, qui divergeaient, mais pas de consensus).
Quand on voit la difficulté qu'il peut y avoir à trouver des informations pertinentes et non contradictoires sur le sujet et les problèmes auxquels on est confrontés rien que pour faire afficher correctement les accents sous windows, cela n'a, malheureusement, pas grand chose d'étonnant :p
Citation:
Quand on regarde bien, même si de nouveaux types de caractères ont été introduits, rien n'a été fait pour y adapter basic_string (par exemple, que signifie le 3ème caractère dans une chaîne UTF-8 ? L'opérateur [] ne devrait-il par retourner un groupe de char_type ?), ni vraiment les flux (c'est toujours aussi complexe de dire qu'un flux doit utiliser une certaine locale pour écrire).
Je comprends bien...
C'est, quelque part, le sens de ma question : j'ai l'impression que le comité s'est, plus ou moins, arrêté à mi chemin en fournissant les traits, mais que c'était malgré tout une étape indispensable à la suite :P
Citation:
Je pense que l'introduction de ces types avait plus pour but de permettre à des personnes dans le domaine de développer des bibliothèques mieux intégrées qu'elles ne l'étaient auparavant, et puis au prochain tour de standardisation, on verra ce qu'il y a. C'est dommage...
Tout à fait...
Mais, encore une fois, j'ai l'impression que c'était une étape indispensable avant d'envisager d'aller plus loin ;)
Citation:
Maintenant, pour les exceptions, ce n'est pas forcément un gros problème : Soit tu décides qu'elles doivent contenir un texte purement technique à usage interne, et dans ce cas là, l'encodage de base suffit bien, soit tu considères qu'elles doivent contenir un texte destiné à l'utilisateur final, et dans ce cas, le résultat de what() est plus à considérer comme un identificateur qui te permettra de trouver le bon message dans la bonne langue et le bon encodage au moment de l'afficher, et pour cet identificateur, l'encodage de base suffit bien. ;)
Pour l'usage exclusivement interne, je suis globalement d'accord...
Par contre, pour ce qui est des textes éventuellement destinés à l'utilisateur final, j'aurais plutôt tendance à considérer le résultat de what() comme faisant partie intégrante du message, à traduire éventuellement, mais à utiliser dans le "langage par défaut" (par exemple, pour le "titre" de la boite de dialogue affichant le problème survenu).
Si je comprend bien, tu considérerais plutot que je fais une erreur de conception dans ma manière d'envisager l'internationalisation :question: (mais bon, je reste de toutes manières ouvert à toute critiques :D )
En tout cas, merci pour vos interventions ;)
Je laisse la discussion ouverte pour laisser la chance à d'autres de s'exprimer ;)