Ver Mensaje Individual
  #1  
Antiguo 01-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Reputación: 3
navbuoy Va por buen camino
a ver si te sirve este codigo para convertir el AnsiString

Código:
#include <windows.h>

AnsiString AnsiToUTF8(const AnsiString &ansiStr)
{
    // Paso 1: Convertir AnsiString a WideString (UTF-16)
    WideString wideStr = WideString(ansiStr);

    // Paso 2: Calcular el tamaño necesario para la cadena UTF-8
    int utf8Len = WideCharToMultiByte(CP_UTF8, 0, wideStr.c_bstr(), -1, NULL, 0, NULL, NULL);

    // Paso 3: Asignar un buffer para almacenar la cadena UTF-8
    char *utf8Str = new char[utf8Len];

    // Paso 4: Convertir la WideString (UTF-16) a UTF-8
    WideCharToMultiByte(CP_UTF8, 0, wideStr.c_bstr(), -1, utf8Str, utf8Len, NULL, NULL);

    // Convertir el buffer de UTF-8 a AnsiString y liberar el buffer
    AnsiString result = utf8Str;
    delete[] utf8Str;

    return result;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString original = "Hola, mundo! ñáéíóú";
    AnsiString utf8Str = AnsiToUTF8(original);
    ShowMessage(utf8Str);  // Muestra la cadena convertida a UTF-8
}
Responder Con Cita