Brak polskich znaków w edytorze CLion.

0

Cześć :)

Mam pytanie odnośnie polskich znaków. Uruchomiłem program (Shift + F10) i niestety, ale nie pokazują się polskie znaki. Problem ten można naprawić za pomocą funkcji SetConsoleOutputCP(CP_UTF8). Chciałem się jednak zapytać czy są jakieś inne metody, aby wszystko poprawnie działało. Próbowałem ustawić kodowanie znaków na UTF-8. Polskie znaki wyświetlają się poprawnie w okienku konsoli, natomiast nie wyświetlają się poprawnie w sekcji run.

screenshot-20210521014750.png
screenshot-20210521014808.png
screenshot-20210521014905.png

Na ostatnim zdjęciu można zobaczyć, że w konsoli znaki wyświetlają się poprawnie. Zależy mi też, aby wyświetlały się one poprawnie w oknie run.

1

temat masz d/d

Problem nie ma nic wspólnego z "brakiem polskich znaków w edytorze"

cout jest pisaniem w strumieniu, co się przekłada na wyjście plikowe nr 2 - jako takie NIE JEST konsolą windows, to są odmienne API.

M.in., szukał bym naprawy okna "Run" parametrach IDE

4

Jak piszesz "W edytorze CLion" to od razu myślę o oknie do edycji kodu, a nie oknie terminala, gdzie uruchomiona jest aplikacja konsolowa.
A sam problem jest związany z cmd oraz jak działa standardowa biblioteka na Windows.

Na Windows najprościej jest używać szerokich napisów wchar_t * wcout L"Cześć wtedy wszystko dział "out of the box".
Alternatywa to walka z kodowaniem znaków i jest tu sporo zamieszania.

1
C:\Users\User\Downloads>cl /source-charset:utf-8 /execution-charset:utf-8 /EHsc tst.cpp && tst.exe >tstUtf-8.txt
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29336 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

tst.cpp
Microsoft (R) Incremental Linker Version 14.28.29336.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:tst.exe
tst.obj

C:\Users\User\Downloads>cl /source-charset:utf-8 /execution-charset:Windows-1250 /EHsc tst.cpp && tst.exe >tst1250.txt
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29336 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

tst.cpp
Microsoft (R) Incremental Linker Version 14.28.29336.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:tst.exe
tst.obj

CzescEncoding.zip

Jak widać pliki wynikowe mają kodowanie tak jak ustawiłem w kompilatorze kodowanie dla pliku wykonalnego.

Teraz używam Windows w angielskiej więc moja storna kodowa to 437, ale działa po wybraniu właściwej strony kodowej, ty możesz skompilować aplikację od razu do docelowej strony kodowej (Windows-1250):

C:\Users\User\Downloads>cl /source-charset:utf-8 /execution-charset:Windows-1250 /EHsc tst.cpp && chcp 1250 && tst.exe
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29336 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

tst.cpp
Microsoft (R) Incremental Linker Version 14.28.29336.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:tst.exe
tst.obj
Active code page: 1250
Cześć!

C:\Users\User\Downloads>cl /source-charset:utf-8 /execution-charset:utf-8 /EHsc tst.cpp && chcp 65001 && tst.exe
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29336 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

tst.cpp
Microsoft (R) Incremental Linker Version 14.28.29336.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:tst.exe
tst.obj
Active code page: 65001
Cześć!

Jak strona kodowa cmd nie pasuje do kodowania, jakiego używa aplikacja, to wychodzą krzaki:

C:\Users\User\Downloads>chcp 1250
Active code page: 1250

C:\Users\User\Downloads>tst.exe
Cześć!

C:\Users\User\Downloads>chcp 65001
Active code page: 65001

C:\Users\User\Downloads>tst.exe
Cześć!

1 użytkowników online, w tym zalogowanych: 0, gości: 1