• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Code::Blocks wyświetlanie zawartości pliku .txt z polskimi znakami

Object Storage Arubacloud
0 głosów
454 wizyt
pytanie zadane 11 maja 2020 w C i C++ przez Arkadiuszz Nowicjusz (120 p.)

Cześć,

Mam problem z wyświetlaniem zawartości pliku .txt w którym są polskie znaki. Na początku funkcji main ustawiam:
 

setlocale(LC_ALL,"");

dodatkowo stworzyłem funkcję która ma za zadanie tutaj jedynie wyświetlanie zawartości:
 

void wyswietl(char* nazwa_pliku){
wifstream moj;
wstring linia;
moj.open(nazwa_pliku);
if(moj.good()){
while(!moj.eof()){
    getline(moj,linia);
    wcout<<linia<<endl;
}
}
else{
    wcout<<"Nie mogłem otworzyć tego pliku!"<<endl;
}
moj.close();
}


moje kodowanie jest ustawione na domyślnie WINDOWS-1250.
Proszę o pomoc, gdyż polskie znaki są wyświetlane na zasadzie:
 
Ąnformujemy, ĹĽe realizacja zamĂłwieĹ„ w sklepie odbywa siÄ™ na bieĹĽÄ…co, zgodnie z deklarowanymi na stronie terminami. W najbliĹĽszych tygodniach nie planujemy przerw w dostawach, ale z uwagi na to, ĹĽe sytuacja w kraju zmienia siÄ™ niezwykle dynamicznie, prosimy Was, naszych klientĂłw, o cierpliwość i zrozumienie w przypadku niewielkich opóźnieĹ„ w realizacji wysyĹ‚ek (1-2 dni) oraz chsśąwilowych ograniczeĹ„ dotyczÄ…cych przesyĹ‚ek zagranicznych. JednoczeĹ›nie wstrzymujemy moĹĽliwość odbioru osobistego zamĂłwieĹ„.

2 odpowiedzi

+2 głosów
odpowiedź 11 maja 2020 przez Patrycjerz Mędrzec (192,320 p.)

Typ `wchar_t` przechowuje znaki o rozmiarze większym niż `char` (zazwyczaj ma rozmiar 16 bitów). Można go używać np. do przechowywania znaków UTF-16. Strona kodowa Windows-1250 posiada znaki o rozmiarze bajta (8 bitów), więc powinieneś używać typu `char`, tym samym `std::string` zamiast `std::wstring` itd.

Aby używać w Windowsie strony kodowej Windows-1250, możesz wykorzystać:

setlocale(LC_CTYPE, ".1250");

W dzisiejszych realiach stosuje się głównie UTF-8, który umożliwia efektywny zapis znaków wielu języków świata naraz. Windows-1250 jest ograniczony do znaków krajów środkowoeuropejskich i może nie być wspierany przez inne systemy niż Windows.

komentarz 11 maja 2020 przez Arkadiuszz Nowicjusz (120 p.)
pokombinują i dam znać, dzięki :P
0 głosów
odpowiedź 11 maja 2020 przez RaDeK-2020 Użytkownik (670 p.)
Użyłeś kodowania w standardzie UTF-8? Niewiem czy to pomoże. Ale w UTF-8 powinny być polskie znaki.
komentarz 11 maja 2020 przez Arkadiuszz Nowicjusz (120 p.)
Próbowałem z UTF-8 ale bez rezultatu, problem był z plikiem .txt - ustawiłem mu format WINDOWS-1250 i teraz czyta. można zamknąć.

Podobne pytania

0 głosów
0 odpowiedzi 356 wizyt
0 głosów
0 odpowiedzi 150 wizyt
pytanie zadane 1 stycznia 2019 w C i C++ przez wojtij99 Użytkownik (630 p.)
0 głosów
2 odpowiedzi 734 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...