Skocz do zawartości

[C++] Wyświetlanie Unicode W Konsoli


3k_PL

Rekomendowane odpowiedzi

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 przez 3k_PL
Odnośnik do komentarza
Udostępnij na innych stronach

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ę
×
×
  • Dodaj nową pozycję...