Chaînes C ++: codage UTF-8 ou 16 bits?

Je suis encore à essayer de décider si mon (maison) projet doit utiliser UTF-8 cordes (mis en œuvre en termes de std::string avec d'autres UTF-8 fonctions spécifiques lorsque cela est nécessaire) ou de certains de 16 bits de la chaîne (mis en œuvre comme std::wstring). Le projet est un langage de programmation et environnement (comme VB, c'est une combinaison des deux).

Il y a quelques souhaits/contraintes:

  • Ce serait cool si il pouvait courir sur une quantité limitée de matériel, tels que les ordinateurs disposant de peu de mémoire.
  • Je veux le code à exécuter sur Windows, Mac et (si les ressources le permettent) de Linux.
  • Je vais être en utilisant wxWidgets que mon GUI couche, mais je veux le code qui interagit avec ce toolkit confiné dans un coin de la base de code (j'aurais sans interface graphique, les exécutables).
  • Je voudrais éviter de travailler avec deux différents types de chaînes lorsque vous travaillez avec de l'utilisateur-texte visible et avec les données de l'application.

Actuellement, je travaille avec des std::string, avec l'intention d'utiliser l'UTF-8 fonctions de manipulation de seulement lorsque nécessaire. Il nécessite moins de mémoire, et semble être le sens de nombreuses applications vont de toute façon.

Si vous recommander un 16-bits, que l'on: UTF-16? UCS-2? D'un autre??

source d'informationauteur Carl Seleborg