Mais je me demandais: quand j'écris sf::String myString(L"Héhé"); que signifie ce "L"?
Une chaîne "blabla" est un const char*, donc 8 bits utilisant l'encodage du fichier source. Une chaîne L"blabla" est un const wchar_t, donc 16/32 bits (selon l'OS) et utilisant généralement un encodage Unicode (UCS2 ou UTF-32).
Mais tu devrais lire un bon tutoriel sur les encodages, c'est typiquement le truc qui paraît compliqué quand on n'y connaît rien mais qui est en fait ultra-simple. Je me souviens que j'avais croisé des tutoriels vraiment bons pour expliquer clairement les encodages à ceux qui s'embrouillent complètement avec ça
Problème résolu, au lieu d'envoyer à SFGUI la sf::String je lui ai envoyé la std::basic_string. Les accents s'affichent.. bizarre que la sf::String ne passe pas non?
Là oui, y a un problème. Mais je me doutais qu'il y avait un truc pas clair, puisque std::cout fonctionnait aussi (et il utilise aussi la locale courante, comme sf::String quand tu lui passes un std::string).
Pourrais-tu tester avec une chaîne simple ("é") et me donner quelques informations :
- la valeur des caractères dans ta std::string UTF-8
- la valeur du caractère converti dans ta sf::String
- le nom de ta locale par défaut
std::cout << std::locale().name() << std::endl;
- le nom de la locale de std::cout
std::cout << std::cout.getloc().name() << std::endl;