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

question-closed c++ | Kodowanie pliku | polskie znaki

Object Storage Arubacloud
0 głosów
458 wizyt
pytanie zadane 11 maja 2020 w C i C++ przez Majster6918 Gaduła (4,030 p.)
zamknięte 15 maja 2020 przez Majster6918

Hejo 

Mam program w c++ na directx 9, jako środowiska graficznego używam ImGui i używam kodowania znaków jako 65001 bez podpisu, w programie mam normalnie Polskie znaki, lecz elementy typu "nazwy plików" komunikaty MessageBox, powiadomienia balonowe nie mają Polskich znaków, a chciałbym ich użyć w tych funkcjach. 

 

Polskich znaków nie z racji że plik nie jest kodowany jako 1250, tylko jest 65001 bez podpisu...

 

komentarz zamknięcia: Em działa :D

1 odpowiedź

0 głosów
odpowiedź 11 maja 2020 przez j23 Mędrzec (194,920 p.)
Zapisz pliki w kodowaniu 65001 (utf-8) z BOM-em i problem powinien zniknąć.
komentarz 11 maja 2020 przez Majster6918 Gaduła (4,030 p.)
gdy robie z boomem, to nie Polskich znaków w aplikacji a na powiadomieniach są
komentarz 12 maja 2020 przez j23 Mędrzec (194,920 p.)

Pewnie pozostała część aplikacji oczekuje łańcuchów znakowych w kodowaniu utf-8. Bez BOM-u kompilator literały tekstowe dawał dokładnie tak, jak były w pliku, bo założył, że kodowanie plików jest takie samo jak systemowe, dlatego funkcje WinAPI nie wyświetlały poprawnie. Z BOM-em wszystkie literały domyślnie konwertowane są do kodowania systemowego (Windows-1250 w PL).

Rozwiązaniem na szybko jest dodawanie do literałów prefiksu u8:

const char* text = u8"Jakiś tekst, który ma być w kodowaniu utf-8."

Aczkolwiek powinieneś IMO wszystko pisać w unikodzie (włącznie z WinAPI).

komentarz 15 maja 2020 przez Majster6918 Gaduła (4,030 p.)
Dzięki za próby lecz sam już tak próbowałem i to nie działa, nie wiem czy to wina ImGui czy jak...

Nie chce zmieniać środowiska graficznego z względu takiego że edytowałem ten kod, polepszałem go itd długi czas
komentarz 15 maja 2020 przez j23 Mędrzec (194,920 p.)

To u8 będzie działać, jeśli plik będzie zapisany z BOM-em. Ewidentnie coś nie tak robisz, bo to nie jest jakiś duży problem.

Jaki kompilator, MinGW?

komentarz 15 maja 2020 przez Majster6918 Gaduła (4,030 p.)
Naprawione :D
komentarz 15 maja 2020 przez j23 Mędrzec (194,920 p.)
Co zrobiłeś?
komentarz 15 maja 2020 przez Majster6918 Gaduła (4,030 p.)
Jak 'poprawiałem' kod ImGui itd to zrobiłem mały błąd, czyli wychodzi że to moja wina :D

Podobne pytania

0 głosów
0 odpowiedzi 396 wizyt
0 głosów
1 odpowiedź 385 wizyt
pytanie zadane 8 kwietnia 2022 w JavaScript przez Vxid Functixn Bywalec (2,720 p.)
0 głosów
2 odpowiedzi 1,157 wizyt
pytanie zadane 22 marca 2021 w C# przez disaster Bywalec (2,120 p.)

92,693 zapytań

141,604 odpowiedzi

320,103 komentarzy

62,051 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

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!

...