3k_PL Napisano Październik 11, 2010 Zgłoszenie Share Napisano Październik 11, 2010 (edytowane) Witam Mam taki prosty kod: #include <iostream> #include <fstream> using namespace std; int main() { cout << "Ala"<<endl; cout << "私は開発者です"<<endl; cout << "Sórkersaczwa"<<endl; cout << "cout + u : " << "\u00E9l\u00E8ve" << endl; cout << "cout + x : " << "\x00E9l\x00E8ve" << endl; wcout << "wcout + x : " << "\x00E9l\x00E8ve" << endl; wcout << "wcout + u : " <<"\u00E9l\u00E8ve" << endl; cout << "cout : " << "élève" << endl; printf("print : PL: Jas ASIA: 私 FR: élève FR+u: \u00E9l\u00E8ve\n"); return 0; } kompiluje przez g++ nazwa_pliku.c -o binarka.o Zwraca mi: ./binarka.o Ala 私は開発者です Sórkersaczwa cout + u : élève cout + x : �l�ve wcout + x : lve wcout + u : lve cout : élève print : PL: Jas ASIA: 私 FR: élève FR+u: élève Tak sie dzieje na F13, na CentOS-ie 5.5 64bit podobnie ale kilka azjatyckich literek padlo. Teraz... od kiedy to cout wypluwa Unicode? Czy wcout tego nie powinien robic? Wiekszosc poradników mówi by robic tak: locale loc("pl_PL.UTF-8"); cout.imbue(loc); wcout.imbue(loc); wstring ws1 = L"Inf: \u221E"; wstring ws2 = L"Inf: \uC38A"; wcout << ws1<<endl; wcout << ws2<<endl; A to zupelnie nie dziala u mnie zarówno na F13 jak i CentOS-ie, a takie rozwiazanie zaleca np. ksiazka "C++ Receptury". Ok, moge uzywac cout i printf ale ncurses juz takie fajne nie sa. Zatem jak w obecnych czasach sie drukuje w ncurses polskie krzaki? Mam uzyc ncursesw? Kod znowu znaleziony na necie nie dziala: initscr(); curs_set(0); //remove cursor addwstr(L"\u2019 Luóslas]"); //Print out the unicode character refresh(); //update screen getch(); //wait for input endwin(); a includowalem ncursesw i oczywiscie linkowane tez. Gdy juz wyswietle w ncurses to pójde dalej bo ostatecznie ma sie to wyswietlic w Curses Development Kit (cdk) który sam spaczkowalem bo ten z repo jest do niczego, ale niestety musze tam wybrac czy mam zbudowac paczke z ncurses czy ncursesw. Moge tez zrobic dwie paczki cdk i cdkw ale to kolejne godziny zabawy by paczki nie konfliktowaly ze soba. Problem wystepuje tez w Ubuntu 10.04 jak wynika ze studiowania "googla". --------- Edit --------------------- Wrócilem do problemu i co odkrylem, drukuja sie poprawnie tylko niektóre polskie krzaczki: Gdy podaje do CDK/ncurses "q@wleer¶tŧy←u↓i→oópþ[aassdð", "fđgŋhħ'jjkĸllzzxzccv“b”nnmµ" Dostaje: q@w�~e�~r¶tŧy�~~u�~~i�~~oópþ[a�~s�~dð f�~g�~hħ'jjkĸl�~zzxzc�~v�~~b�~~n�~mµ Nie wazne czy podam mu s czy \u015B. Brak mi czcionek? Edytowane Listopad 25, 2010 przez 3k_PL Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się