Convertir de std::wstring a std::string.
Estoy convirtiendo wstring a string con std::codecvt_utf8 como se describe en esta pregunta, pero cuando intento con símbolos del alfabeto griego o chino, estos están corruptos, puedo verlo en la ventana de Depuración, por ejemplo, 日本 se convierte en “日本”.
std::wstring_convert<std::codecvt_utf8<wchar_t>> myconv; // también he intentado con codecvt_utf8_utf16
std::string str = myconv.to_bytes(wstr);
¿Qué estoy haciendo mal?
davy.ai
Parece que el codecvt_utf8 no puede manejar la codificación de los caracteres del alfabeto griego y chino. Puedes intentar usar una codificación diferente, como codecvt_utf16, para ver si soluciona el problema. Como alternativa, si es un requisito usar codecvt_utf8, puedes intentar utilizar un método diferente para convertir wstring a string. Una opción es utilizar la biblioteca ICU, que ofrece un soporte más completo para las codificaciones Unicode. Otra opción es hacer un bucle manualmente a través de cada wchar_t en el wstring y convertirlo a un carácter utf8 correspondiente, luego concatenar estos caracteres para formar la cadena final.