Voilà l'explication de mon sizeof('é') = 4!
Effectivement, 'é' est un int, et un int vaut 4 octets chez moi. (ça dépend des environnement je crois).
Sinon le reste du code m'a renvoyé sans surprise "é = c3a9"
Peut-être que ton éditeur hexa te remet les octets dans l'ordre pour que ce soit plus facile à lire, alors que le miens les sort brut de décoffrage.
Si je me souviens bien ce qu'on m'a dit, cet inversion d'octet 2 par 2, c'est propre à tout les processeurs intel type x86 (AMD aussi du coup). Ce n'est pas le cas des processeur Sun, IBM et autre.
En faisant des recherches, (assez laborieuses finalement. Je pensais trouver des informations plus facilement sur ce problème de base.) je suis tomber sur la classe ustring de la bibliothèque glibmm de gtk+.
Dans la doc de cette bibliothèque j'ai lu ça:
Donc le wstring que j'utilise ne gérerait pas totalement l'utf-8.Glib::ustring has much the same interface as std::string, but contains Unicode characters encoded as UTF-8.
[...]
In a perfect world the C++ Standard Library would contain a UTF-8 string class. Unfortunately, the C++ standard doesn't mention UTF-8 at all. Note that std::wstring is not a UTF-8 string class because it contains only fixed-width characters (where width could be 32, 16, or even 8 bits).
Ça viendrait peut-être de là le problème!
J'ai pas le temps tout de suite, mais je vais tester ça ce soir. Je vous tiens au courant.
Partager