71 votes

Comment désactiver Unicode dans un projet VC++ ?

J'ai un projet VC++ dans Visual Studio 2008.

C'est définir les symboles pour l'unicode sur la ligne de commande du compilateur ( /D "_UNICODE" /D "UNICODE" ), même si ce symbole n'est pas activé dans la section du préprocesseur du projet.

alt text

En conséquence, je compile avec les versions Unicode de toutes les fonctions de la bibliothèque Win32, par opposition aux versions ANSI. Par exemple, dans WinBase.h, il y a :

#ifdef UNICODE
#define CreateFile  CreateFileW
#else
#define CreateFile  CreateFileA
#endif // !UNICODE

Où l'unicode est activé dans le projet VC++, comment puis-je le désactiver ?

9 votes

Maintenant, la vraie question : Pourquoi - pour l'amour du ciel - espérez-vous obtenir quelque chose en désactivant le support UNICODE ? Ce doit être la toute première fois que je vois quelqu'un demander de l'aide pour passer en mode échec.

3 votes

Si vous avez du code hérité à supporter ? Nous avons un tas de bibliothèques qui utilisent char/TCHAR de manière interchangeable par exemple, depuis 15 ans.

0 votes

@IInspectable : La prise en charge d'Unicode n'est pas synonyme de déplacement char a wchar_t qui est la façon merdique qu'a Windows de faire de l'"Unicode". Je préfère UTF-8 à une implémentation bâclée d'UTF-16.

107voto

Nemanja Boric Points 11853

Avez-vous essayé : Propriétés du projet - Général - Valeurs par défaut du projet - Jeu de caractères ?

Voir les réponses à cette question pour les différences entre les options "Use Multi-Byte Character Set" et "Not Set" : À propos de l'option "Jeu de caractères" dans Visual Studio 2010

1 votes

Merci beaucoup. Cela m'a beaucoup aidé pour un projet que j'ai trouvé et que je ne peux pas compiler.

2 votes

Merci encore, cela a sauvé mon problème : l'UNICODE par défaut n'est pas une bonne chose !

8 votes

Dans Visual Studio 2019 : Project Properties > Advanced > Character Set Régler sur Not Set o Use Multi-Byte Character Set .

20voto

Ellis Miller Points 111

Burgos a la bonne réponse. Juste pour clarifier, le jeu de caractères devrait être changé en "Not Set".

8voto

Ahmed Said Points 3277

Propriétés du projet -> propriétés de la configuration -> généralités -> ensemble de caractères

-3voto

durgesh t Points 119

Utilice #undef UNICODE en haut de votre fichier principal.

6 votes

Il n'y a rien de tel qu'un "fichier principal" . Il existe des unités de compilation. L'indéfinition explicite d'un symbole de préprocesseur dans le code source manquera les fichiers inclus par le biais d'une commande /FI option du compilateur. De plus, la non-définition de UNICODE sans aussi indéfinir _UNICODE produira un joli décalage entre l'API Windows et le CRT. Réponse plutôt inutile, -1.

0 votes

Peut-être que tu voulais dire stdafx.h mais c'est toujours un piratage stupide.

-17voto

chatcja Points 112

Aucune des solutions ci-dessus n'a fonctionné pour moi. Mais

#include <Windows.h>

a bien fonctionné.

1 votes

Quoi ? Vous venez d'inclure les en-têtes de l'API Windows, sans désactiver l'Unicode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X