es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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.

Comments are closed.