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
}