URL: https://linuxfr.org/forums/programmation-c--2/posts/wchar_t-conversion-multibyte-et-unicode Title: wchar_t, conversion multibyte et Unicode... Authors: JaguarWan Date: 2005年11月15日T23:44:25+01:00 Tags: Score: 0 Bonsoir à tous :) J'aurais encore une fois besoin de votre expertise pour cette fois les chaînes de caractère unicode. J'ai commencé à coder un module pour gérer les chaînes, ajouté le support unicode, et tout semble marcher à peu près correctement, sauf l'affichage... Quand je veux afficher une chaine qui contient vraiment des caractères spéciaux (par exemple des kanjis ou des voyelles avec umlaut), bah le printf ne l'affiche pas (pourtant avec %ls). Interloqué, j'ai donc vérifié le contenu de ma chaine en l'affichant caractère par caractère avec putwchar(), et là tout apparaît sans problème. J'en ai donc déduit (à tort ?) qu'une conversion wchar_t->multibyte devait avoir lieu en fourbe dans printf()... J'ai alors codé une fonction pour faire la conversion manuellement avec wcstombs(3). Mais quand je l'utilise, il s'avère que celle ci échoue avec "Invalid or incomplete multibyte or wide character"... Comme j'ai une locale douteuse (en_US.eucJP), j'ai envoyé mon code à un ami windowsien qui a testé ça sous Dev-C++, et le programme semble marcher correctement, sauf que la console windows affiche Û au lieu de é. Ça arrive souvent avec d'autres programmes, mais ne serait-ce pas du à une mauvaise gestion de l'unicode dans mon code (et celui des autres programmes qui font ça) ? J'ai mis mon code en ligne ici: [http://mammouth.tuxfamily.org/m_string.c](http://mammouth.tuxfamily.org/m_string.c) [http://mammouth.tuxfamily.org/m_string.h](http://mammouth.tuxfamily.org/m_string.h) Je vous serais extrêmement reconnaissant si vous pouviez jeter un coup d'oeil et me dire si chezvousçamarche® ou bien ce qui ne va pas... À défaut, des pointeurs sur de bons sites portant sur la gestion de l'unicode en C ISO seraient les très bienvenus ! Merci d'avoir lu ce long post jusqu'au bout, et merci d'avance pour vos réponses :)