Estoy tratando de convertir un C++ std::string
a UTF-8 o std::wstring
sin perder información (considere una cadena que contenga caracteres que no sean ASCII).¿Qué codificación usa std :: string.c_str()?
Según http://forums.sun.com/thread.jspa?threadID=486770&forumID=31:
Si el std :: string tiene caracteres no ASCII, debe proporcionar una función que convierte desde su codificación a UTF-8 [...]
¿Qué codificación usa std::string.c_str()
? ¿Cómo puedo convertirlo a UTF-8 o std::wstring
de forma multiplataforma?
¿Entonces esencialmente no hay forma de que convierta std :: string sin conocer su codificación antes de tiempo? Lo pregunto porque estoy escribiendo una función API que toma una std :: string. Supongo que la documentación deberá indicar a los usuarios qué formato debe pasar. – Gili
@Gili, a la derecha: no se puede convertir de manera confiable una secuencia de bytes en una codificación desconocida a UTF-8 (o cualquier otra cosa ;-). Le recomiendo que le pida a la persona que llama que suministre datos UTF-8; la mayoría de las otras codificaciones no permiten la codificación de todas las posibles cadenas Unicode. Como dice @Naaff, ASCII es un caso especial de UTF-8 (e ISO-8859- * y muchas otras codificaciones), así que si ese es tu caso no hay que preocuparse (una nota al pie en los documentos les recuerda a los usuarios que podrían salvarlos). preocupación;-). –
Buena respuesta, gracias :) – Gili