Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

SDL_TTF problem z polskimi znakami

Ostatnio zmodyfikowano 2012-01-03 16:18
Autor Wiadomość
programista12
Temat założony przez niniejszego użytkownika
SDL_TTF problem z polskimi znakami
» 2012-01-02 17:35:14
Przeszedłem z Visual C++ 2010 na Code::Blocks. Jak programowałem w Visualu, to do wyświetlania polskich znaków wystarczyły te funkcje:
C/C++
//konwersja string na wstring
wstring StrToWstr( const string & s )
{
    wstring tmp;
    for( unsigned i = 0; i < s.length(); i++ )
    {
        if( s[ i ] == 'ą' ) tmp += L"ą";
        else if( s[ i ] == 'ć' ) tmp += L"ć";
        else if( s[ i ] == 'ę' ) tmp += L"ę";
        else if( s[ i ] == 'ł' ) tmp += L"ł";
        else if( s[ i ] == 'ń' ) tmp += L"ń";
        else if( s[ i ] == 'ó' ) tmp += L"ó";
        else if( s[ i ] == 'ś' ) tmp += L"ś";
        else if( s[ i ] == 'ź' ) tmp += L"ź";
        else if( s[ i ] == 'ż' ) tmp += L"ż";
        else if( s[ i ] == 'Ą' ) tmp += L"Ą";
        else if( s[ i ] == 'Ć' ) tmp += L"Ć";
        else if( s[ i ] == 'Ę' ) tmp += L"Ę";
        else if( s[ i ] == 'Ł' ) tmp += L"Ł";
        else if( s[ i ] == 'Ń' ) tmp += L"Ń";
        else if( s[ i ] == 'Ó' ) tmp += L"Ó";
        else if( s[ i ] == 'Ś' ) tmp += L"Ś";
        else if( s[ i ] == 'Ź' ) tmp += L"Ź";
        else if( s[ i ] == 'Ż' ) tmp += L"Ż";
        else tmp += s[ i ];
       
    }
    return tmp;
}

//wyświetlanie tekstu
void ShowText( int x, int y, string s, TTF_Font * f, SDL_Color c, SDL_Surface * dst )
{
    wstring s1 = StrToWstr( s );
    SDL_Surface * txt = TTF_RenderUNICODE_Blended( f,(( Uint16 * ) s1.data() ), c );
    ShowImage( x, y, txt, dst, NULL );
    SDL_FreeSurface( txt );
}
Jednak ta metoda nie działa w Code::Blocks (zamiast literek pojawiają się puste kwadraty). W Visualu nie zmieniałem kodowania znaków w plikach źródłowych.
Czy da się jakoś zrobić, aby polskie znaki poprawnie się wyświetlały? Z góry dzięki za pomoc.
P-47063
xevuel
» 2012-01-03 14:49:38
Wyświetl sobie po kolei wszystkie znaki ASCII. Chyba powyżej 100 możesz znaleźć polskie. Potem np.
char t =( char ) 134;
P-47116
m4tx
» 2012-01-03 16:18:45
Z tego co wiem Visual ma domyślne kodowanie windows-1250, a Code::Blocks UTF-8. Polecam więc jednak zacząć od kodowania pliku :)
P-47119
« 1 »
  Strona 1 z 1