code:Pourquoi wprintf sépare-t-il la ligature Unicode en deux graphèmes différents?
#include <stdio.h>
#include <wchar.h>
#define USE_W
int main()
{
#ifdef USE_W
const wchar_t *ae_utf16 = L"\x00E6 & ASCII text ae\n";
wprintf(ae_utf16);
#else
const char *ae_utf8 = "\xC3\xA6 & ASCII text ae\n";
printf(ae_utf8);
#endif
return 0;
}
Sortie:
ae & texte ASCII ae
Bien que printf produit correct sortie UTF-8:
æ texte & ASCII ae
Vous pouvez tester ce here.
Nous vous remercions d'avoir renseigné l'exigence de définir un paramètre régional avant d'utiliser wprintf. – user206334
Cela fonctionne sur Linux. Sous Windows, essayez de définir les paramètres régionaux sur une page de codes UTF-8 [Échec] (https://msdn.microsoft.com/fr-fr/library/x99tb11d.aspx). AFAICT, "wprintf" ne peut pas être utilisé pour imprimer une chaîne UTF-8. [WriteConsole] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms687401 (v = vs.85) .aspx) est requis. – mgiuffrida