J'ai une question sur l'option "Jeu de caractères" dans Visual Studio. Les options du jeu de caractères sont les suivantes:
Je veux savoir quelle est la différence entre trois options dans le jeu de caractères?
De plus, si je choisis quelque chose, cela affectera-t-il la prise en charge des langues autres que l'anglais (comme les langues RTL)?
Il s'agit d'un paramètre de compatibilité, destiné au code hérité qui a été écrit pour les anciennes versions de Windows qui n'étaient pas activées pour Unicode. Versions de la famille Windows 9x, Windows ME était la dernière et largement ignorée. Lorsque "Non défini" ou "Utiliser un jeu de caractères multi-octets" est sélectionné, toutes les fonctions de l'API Windows qui prennent une chaîne en argument sont redéfinies en une petite fonction d'aide à la compatibilité qui traduit les chaînes char*
En wchar_t*
strings, le type de chaîne natif de l'API.
Un tel code dépend de manière critique du paramètre de page de codes système par défaut. La page de codes mappe les caractères 8 bits à Unicode qui sélectionne le glyphe de police. Votre programme ne produira un texte correct que lorsque la machine qui exécute votre code a la page de codes correcte. Les caractères dont la valeur> = 128 seront rendus incorrects si la page de codes ne correspond pas.
Sélectionnez toujours "Utiliser le jeu de caractères Unicode" pour le code moderne. Surtout lorsque vous souhaitez prendre en charge des langues avec une disposition de droite à gauche et que vous n'avez pas de page de codes arabe ou hébreu sélectionnée sur votre machine de développement. Utilisez std::wstring
Ou wchar_t[]
Dans votre code. Pour obtenir une disposition RTL réelle, vous devez activer l'indicateur de style WS_EX_RTLREADING
Dans l'appel CreateWindowEx()
.
Hans a déjà répondu à la question, mais j'ai trouvé que ces paramètres avaient des noms curieux. (Qu'est-ce qui n'est pas exactement défini, et pourquoi les deux autres options semblent-elles si similaires?)
Différence entre MBCS et UTF-8 sous Windows aborde ces problèmes de manière beaucoup plus détaillée.