[SFML 2.1] polskie znaki w sf::String
Ostatnio zmodyfikowano 2014-01-01 18:49
DejaVu |
» 2013-12-31 17:56:17 Otwierając notatnikiem settings.ini widzisz poprawne polskie znaki? |
|
Piotr020798 Temat założony przez niniejszego użytkownika |
» 2013-12-31 18:03:13 Tak. |
|
DejaVu |
» 2013-12-31 18:10:59 czyli:
std::string tekst; sf::String bla( tekst.c_str() );
działa źle, a:
std::string tekst; sf::String bla( L"ąćęłóńźż" );
działa dobrze? Dzisiaj albo jutro zweryfikuję czy tak faktycznie jest i Ci dam możliwości rozwązania problemu. |
|
Piotr020798 Temat założony przez niniejszego użytkownika |
» 2013-12-31 18:13:44 Tak, musi być z L przed stringiem. |
|
DejaVu |
» 2013-12-31 20:16:09 http://en.sfml-dev.org/forums/index.php?topic=10866.0std::locale::global( std::locale( "" ) );
Nie przynosi oczekiwanego rezultatu. std::locale::global( std::locale( "Polish" ) );
Nie przynosi oczekiwanego rezultatu. Wniosek: najlepiej zapełniać sf::String tekstem unikodowym. Jeżeli wczytujesz tekst do std::string, to konwertuj do std::wstring przy pomocy funkcji MiltiByteToWideChar (rozwiązanie tylko dla Windowsa). http://cpp0x.pl/forum/temat/?id=11257Być może dałoby radę coś wydusić jeszcze z SFML-a, ale to musiałbyś pooglądać jego źródła tj. w jaki sposób dokonuje on konwersji kodowania. Popatrz też w dokumentacji SFML-a na klasę sf::String oraz na konstruktory, jakie są dostępne. |
|
Elaine |
» 2013-12-31 22:01:23 W SFMLu jest funkcja do konwersji UTF-8 na UTF-32: sf::Utf8::toUtf32. Mając tekst w UTF-32 można stworzyć sf::String nie przejmując się ustawieniami lokalnymi. |
|
Wasilek |
» 2013-12-31 23:20:16 |
|
Piotr020798 Temat założony przez niniejszego użytkownika |
» 2014-01-01 18:49:53 Problem rozwiązany. Dziękuje wszystkim za pomoc. Rozwiązanie: sf::String nick; std::string wartosc;
std::basic_string < sf::Uint32 > tmp; sf::Utf8::toUtf32( wartosc.begin(), wartosc.end(), std::back_inserter( tmp ) ); nick = tmp;
A kodowanie pliku to UTF-8 (Bez BOM) |
|
1 « 2 » |