Question

Je veux utiliser SetThreadLocale pour définir un fils codepage UTF8. Jusqu'à présent, je suis en utilisant le deuxième paramètre de macros de conversion de chaîne de atl comme « CT2A (szBUF, CP_UTF8) » pour le faire. Mais je veux être en mesure de mettre le fil codepage une fois au début avec SetThreadLocale () et ne jamais avoir à utiliser le deuxième paramètre de la macro de conversion à nouveau.

Comment puis-je cela? SetThreadLocale ne prendra pas un paramètre de page de code comme CP_UTF8, juste un LCID. Quels paramètres dois-je nourrissais SetThreadLocale pour être y parvenir ??

Gardez à l'esprit, je ne langue particulière à l'esprit. Les chaînes que je reçois pourraient être japonais, coréen, anglais etc. Jusqu'à présent, je vais avoir aucun problème avec ce mélange de chaînes en spécifiant CP_UTF8 comme second paramètre d'une macro de conversion. Vous pouvez demander « bien alors pourquoi ne pas simplement continuer à utiliser le second paramètre ». Réponse «car il peut être facilement oublié par les membres de l'équipe travaillant sur le code. Ce serait bien si elle en utilisant simplement correctement la version des paramètres par défaut 1 de la macro de conversion ».

Était-ce utile?

La solution

SetThreadLocale attend un identificateur de langue, mais UTF-8 n'est pas un identificateur de langue - c'est un codage Unicode. L'un des objectifs de l'ID de la terre est de dire au système comment traiter le texte ANSI dans la gamme 128-255. Étant donné une vraie langue, sa page de code sera utilisé pour le traitement de ces caractères. UTF-8, OTOH, est une représentation compressée de texte Unicode. Pour créer un texte UTF-8, votre entrée doit être Unicode. Compte tenu du texte ANSI, vous ne pourrez pas savoir comment convertir la gamme supérieure de caractères. Ceci est ainsi lorsque vous avez terminé « manuellement », afin de convertir ANSI en UTF-8, vous devez d'abord utiliser MultiByteToWideChar avec un spécifié codepage, et alors seulement vous pouvez convertir la chaîne Unicode résultant en UTF-8.

Maintenant, revenons à votre question - je voudrais aller une autre façon. Si les bugs PARAM codepage supplémentaires vous beaucoup, faire une macro qui cachera ou si (ou hériter de la classe CT2A et ont la deuxième param fixe).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top