Al mirar unicode standard, se recomienda utilizar el char
s plano para almacenar cadenas codificadas en UTF-8. ¿Funciona esto como se esperaba con C++ y el std::string
básico, o existen casos en los que la codificación UTF-8 puede crear problemas?¿Cuál es la mejor manera de almacenar cadenas UTF-8 en memoria en C/C++?
Por ejemplo, al calcular la longitud, puede que no sea idéntica a la cantidad de bytes: ¿cómo se supone que se manejará esto? Leyendo el estándar, probablemente estoy bien usando una matriz de char
para el almacenamiento, pero aún necesitaré escribir funciones como strlen
etc., que funcionan en el texto codificado, por lo que entiendo el problema, el estándar las rutinas son solo ASCII o esperan literales anchos (16 bits o más), que no son recomendados por el estándar Unicode. Hasta el momento, la mejor fuente que encontré sobre la materia de codificación es un post en Joel's on Software, pero no explica lo que pobres desarrollador de C++ deberíamos usar :)
Este es probablemente el camino a seguir. También hay una biblioteca de ICU, que hace más o menos lo mismo. – sastanin