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

[SFML 1.6] UTF16ToUTF8

Ostatnio zmodyfikowano 2013-01-19 13:34
Autor Wiadomość
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:
C/C++
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ć?
P-74364
DejaVu
» 2013-01-19 13:34:53
C/C++
std::wstring sTekst = zdarzenie.Text.Unicode;

C/C++
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
P-74391
« 1 »
  Strona 1 z 1