SDL_TTF problem z polskimi znakami
Ostatnio zmodyfikowano 2012-01-03 16:18
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: 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; }
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. |
|
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; |
|
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 :) |
|
« 1 » |