Estoy trabajando en un programa C++ solo en inglés para Windows donde nos dijeron "siempre use std :: wstring", pero parece que nadie en el equipo realmente tiene mucho entendimiento más allá de eso.Confundido sobre std :: wstring, UTF-16, UTF-8 de C++ y mostrando cadenas en una GUI de Windows
Ya leí la pregunta con el título "std::wstring VS std::string. Fue muy útil, pero todavía no entiendo cómo aplicar toda esa información a mi problema.
El programa en el que estoy trabajando muestra datos en una GUI de Windows. Esa información se conserva como XML. A menudo transformamos ese XML usando XSLT en HTML o XSL: FO para propósitos de informes.
Mi sensación basada en lo que he leído es que el código HTML debe codificarse como UTF-8. Sé muy poco sobre el desarrollo de la GUI, pero lo poco que he leído indica que todo el material de la GUI se basa en cadenas codificadas en UTF-16.
Estoy tratando de entender dónde me deja. Digamos que decidimos que todos nuestros datos persistentes deberían ser XML codificados con UTF-8. ¿Esto significa que para mostrar datos persistentes en un componente de UI, realmente debería estar realizando algún tipo de proceso de transcodificación UTF-8 a UTF-16?
Sospecho que mi explicación podría usar una aclaración, por lo que intentaré proporcionarla si tiene alguna pregunta.
En realidad no es exacto decir que * nix se basa en UTF-8, la forma en que Windows se basa en UTF-16. Se basa en una codificación de caracteres definida localmente (en terminología de Windows, ANSI). POSIX requiere que ciertos caracteres (incluido NUL) se representen en un solo byte, por lo que UTF-16 y UTF-32 no están permitidos, pero UTF-8 sí lo está. – dan04