2013-04-08 1 views

Répondre

1

printf envoie juste des octets bruts à votre terminal; il ne sait rien sur les encodages. Si votre terminal est configuré pour interpréter cela comme UTF-8, il affichera les bons caractères.

wprintf, en revanche, connaît les codages. Il behaves as though il utilise la fonction wcrtomb, qui code un caractère large (wchar_t) en une séquence multi-octets, selon les paramètres régionaux actuels. Si la localisation par défaut est "C", ce qui est assez minimaliste, le caractère æ est converti en la séquence d'octets "plus ou moins équivalente" ae.

Si vous définissez explicitement les paramètres régionaux sur quelque chose en utilisant UTF-8, comme "en_US.UTF-8", la sortie is as expected. Bien sûr, l'ensemble des paramètres régionaux pris en charge diffère d'un système à l'autre, il n'est donc pas bon de le coder en dur.

+0

Nous vous remercions d'avoir renseigné l'exigence de définir un paramètre régional avant d'utiliser wprintf. – user206334

+0

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

Questions connexes