C:\Users\luka\Desktop\â¿?icΣ\unicode.exe C:\Users\luka\Desktop\â¿?icΣ\unicode.exe C:\Users\luka\Desktop\â¿
4 Réponses :
Ceci est probablement associé à ce que le programme, mais la console, je vous suggère d'essayer de sortir dans un fichier et de vérifier si le codage est correct. P>
Vous pouvez le faire en utilisant Si le problème persiste, essayez d'utiliser Visual Studio avec freopen code>: p>
int main (int argc, char * argv []) {
freopen ("sortie-fichier-name.txt", "w", stdout);
/ * reste de code * /
} code> p>
_SetMode (..., _o_u16text) code> juste avant d'utiliser
wcout code> comme décrit ici: Httpts://stackoverflow.com/a/9051543/9541897 p>
Comment utiliser freopen ("sortie-fichier-name-nom.txt", "w", stdout); ? Est-il censé imprimer toutes les coutures précédentes ou je le transmettes-je un wstring quelque part? Et ai-je besoin de le fermer?
Il suffit de l'ajouter juste en dessous de int Main () { code>.
Int Main () {Freopen ("Out.Txt", "W", stdout); / * reste du code * /} code>
Le fichier est vide. Voici le code: `` int Main (int Argc, char * argv []) {std :: wcout << l "anglais - ελληνικά - español." << STD :: endl; freopen ("sortie-fichier-name.txt", "w", stdout); std :: wcout << l "areüлicä" << std :: endl; } ``
Je sais que cela sonne bizarre mais quand j'ai commenté le premier wcout code> ligne et supprimé le
l code> il vient de fonctionner parfaitement !! Essayez d'utiliser ce code:
int Main (int Argc, char * argv []) {Freopen ("Sortie-File-Name.txt", "W", stdout); std :: wcout << "üлicä areüлicä" << std :: endl; } code>
Qui sauve réellement bien alors peut-être qu'il y a de l'espoir
WCHAR_T FileName [max_path]; GetModulefilenamew (null, nom de fichier, max_path); std :: wcout << nom de fichier << std :: endl; sauve toujours juste le premier tho
Cela nous laisse avec deux scénarios possibles, soit nom de fichier code> contient déjà un format non valide, soit le format correct mais
wcout code> traite de la mauvaise manière. Veuillez vérifier à l'aide de Visual Studio et
_SetMode (..., _O_U16Text) CODE> DROITE AVANT D'UTILISER
WCOUT CODE>, cela vérifierait si
wcout code> est défectueux
L'utilisation du Le problème est dans l'impression Essayez l'impression dans Visual Studio Vous pouvez également utiliser < a href = "https://stackoverflow.com/questions/2492077/Output-unicode-strings-in-windows-console-app/9051543#9051543"> Vous avez également un point d'entrée facultatif Le point d'entrée code> principale fournit getmodulefilename code> est correcte. Vous devriez voir le résultat attendu avec
MessageBoxw (0, nom de fichier, 0, 0); code>
L "¼ð" icä " code> sur la console de fenêtre . P>
"¼ð" icä " code> sur la console: p>
_SetMode code> pour activer l'utilisation de
std :: wcout / std :: wcin code> p>
wmain (int argc, wchar_t * argv []) code> qui fournit
argv code> dans l'encodage UTF16. p>
argv code> dans l'encodage ANSI (pas de codage UTF8). ANSI peut perdre des informations, contrairement à Unicode. P> p>
Voici un exemple qui fonctionne avec Windows. Vous devrez trouver les paramètres de compilateur / lieur droit pour prendre en charge Wmain sur Mingw, mais cela fonctionnera. sortie: p> _SetMode code> permet d'écrire unicode directement sur le terminal et doit fonctionner aussi longtemps que la police prend en charge les caractères. Dans mon exemple, j'utilise certains chinois, que ma police prend en charge:
Pourquoi êtes-vous Typefing Dans tous les cas, comme @ n.m. dit dans les commentaires, les arguments de Cela vous obtiendra les données que vous voulez. Ensuite, il vous suffit de faire face à la question de la sortie Unicode à la console. Comme d'autres réponses signalent, la console Windows ne prend pas en charge la sortie UTF-16 via lpwstr code> et
pwstr code> manuellement?
windows.h code> traite déjà cela pour vous. p>
principal () code> ne sont pas codés dans UTF-8 sous Windows, afin de convertir des caractères non-ASCII à l'aide d'un convertisseur UTF8-> UTF16 ne produira pas la sortie correcte. Utilisez le win32
MultiByteTowidechar () < / Code>
fonction à la place pour convertir les arguments, à l'aide de cp_acp code> comme code de code à convertir de. Ou, utilisez
wmain () code> à la place, qui fournit des arguments comme
wchar_t * code> au lieu de
char * code>. P>.
std :: wcout code> Par défaut, vous devez donc sauter à travers des cerceaux supplémentaires pour que cela fonctionne correctement (il y a beaucoup d'autres Questions sur Stackoverflow à propos de cette question). P>
Écrivez-vous dans un fichier ou à un terminal?
cmd, mais quand i CD dans le dossier, il est affiché correctement afin que cela ne soit pas un problème, sauf si cela ne montre que C ++ Unicode de manière incorrecte.
Tho quand je fais STD :: wcout << l "üлicä" << std :: endl; Il affiche ⁿ, et quand j'ajoute du texte, par exemple L "Areüлicä", il s'affiche
Windows ne prend pas en charge UF-8 dans
argv code>, donc prenant un élément argv et prétendant faire semblant une chaîne UTF-8 ne fonctionnera tout simplement pas. Si vous programmez pour Windows, votre meilleur pari est probablement d'utiliser
Wmain code> et
wchar_t ** argv code>.
Wmain se traduit par une référence non définie à WinMain
C: / MINGW / MINGW64 / BIN /../ LIB / GCC / X86_64-W64-MINGW32 / 8.1.0 /../ .//../../x86_64-w64- MINGW32 / LIB / ../lib\l ibmingw32.a (lib64_li bingw32_a-crt0_c.o): crt0_c.c.c :(. Text.sta RTUP + 0X2E): Référence non définie à `Winmain 'Collect2.exe: Erreur: LD Retourné 1 statut de sortie
Si vous utilisez un compilateur Microsoft, utilisez
wmain code> selon la documentation de Mucrosoft. Il n'est pas aussi simple que le remplacement de
principal code>, vous devez également modifier vos paramètres de projet. Je ne sais pas comment MINGW aboutit à ce problème, vous souhaitez probablement consulter la documentation MINGW. Google pour "Mingw Unicode" ou quelque chose. Vous trouverez peut-être quelque chose comme Ceci ou peut-être autre chose.