#include <utf.h>
// Wymagana biblioteka: charconv.lib 

TInt KonwertujDoUtf8( const TDesC& aTekstUnicode )
{
    // Wykorzystujemy statyczn metod CnvUtfConverter::ConvertFromUnicodeToUtf8
    // IMPORT_C static TInt ConvertFromUnicodeToUtf8(TDes8& aUtf7, 
    //                                            const TDesC16& aUnicode);
    
    // Metoda ConvertFromUnicodeToUtf7 zwraca liczb nieprzekonwertowanych
    // znakw lub kod bdu w przypadku niepowodzenia.
    
    // Nie wiemy, jak dugi bdzie tekst wyjciowy w formacie UTF-8.
    // Tworzymy niewielki bufor, do ktrego zapisywane bd kolejne
    // fragmenty przekonwertowanego tekstu.
    TBuf8<32> utf8;
    // Tworzymy pomocniczy deskryptor wskanikowy i kojarzymy go
    // z tekstem wejciowym. Uatwi on nam wydzielanie kolejnych
    // partii tekstu wejciowego do konwertowania.
    TPtrC tekstDoKonwersji( aTekstUnicode );
    
    // Warto zwracana przez funkcj
    TInt err=0;
    
    // Rozpoczynamy konwersj.
    while( ETrue )
    {
        err = CnvUtfConverter::ConvertFromUnicodeToUtf8( utf8,
                                                         tekstDoKonwersji );
        
        // Sprawdzamy, czy funkcja nie zwrcia kodu bdu.
        if( err < 0 /*bd*/ )
            break;
        
        // Konwersja si udaa - wykonujemy tutaj stosowne
        // operacje, np. zapisujemy je do wikszego deskryptora
        // lub do pliku.
        
        if( err == KErrNone /*koniec konwersji*/ )
            break;
        
        // S jeszcze dane do przekonwertowania. Przesuwamy
        // pocztek deskryptora wskanikowego na pierwszy znak
        // nieprzekonwertowanej czci tekstu Unicode.
        tekstDoKonwersji.Set( tekstDoKonwersji.Right( err ) );
    }
    
    return err;
}
