[SFML 1.6] UTF16ToUTF8
Ostatnio zmodyfikowano 2013-01-19 13:34
Admixior Temat założony przez niniejszego użytkownika |
[SFML 1.6] UTF16ToUTF8 » 2013-01-19 00:23:57 Tak wygląda mój kawałek kodu: else if( zdarzenie.Type == zdarzenie.TextEntered ) { wchar_t wc[ 2 ] = { zdarzenie.Text.Unicode, 0 }; char c[ 2 ]; sf::Unicode::UTF16ToUTF8( wc, & wc[ 1 ], c ); chgnm.AddChar( c[ 0 ] ); }
Funkcja AddChar wymaga chara więc i zmienienie tego nie wchodzi w rozwiązanie problemu. problem jest taki że zdarzenie.Text.Unicode zapoda mi zawsze tekst w unicode max 32 bity. Dla polskich znaków daje 2 bajty. I tu jest problem. Używając funkcji UTF16ToUTF8() i konwertując jakąkolwiek literę otrzymuję A dwoma kropkami(-60) (pierwszy bajt c[0]) i drugi bajt (c[1]) który zawiera różne wartości... czy wie ktoś jak tej funkcji używać? |
|
DejaVu |
» 2013-01-19 13:34:53 std::wstring sTekst = zdarzenie.Text.Unicode;
std::string toUTF8( const wchar_t * str ) { std::string ret; size_t len = wcslen( str ); ret.reserve( len * sizeof( wchar_t ) + 1 ); switch( sizeof( wchar_t ) ) { case 2: sf::Unicode::UTF16ToUTF8( str, & str[ len ], std::back_inserter( ret ) ); break; case 4: sf::Unicode::UTF32ToUTF8( str, & str[ len ], std::back_inserter( ret ) ); break; } return ret; }
http://bgb.googlecode.com/svn-history/r9/trunk/BGB/Utils.cpp |
|
« 1 » |