Konwertowanie Ansi w Windows 10. Brak znaków Ę oraz Ś.

0

Panowie korzystam prywatnie z drukarki termicznej 58mm, na której drukuję na własne potrzeby jakieś tam niewielkie treści z poziomu Richedit'a.
Aby na urządzeniu drukowały się polskie znaki, konwertowałem je wg poniższego:
ę = #145
ó = #162
ą = #134
...
myślę, że wiadomo o co chodzi.

Co ciekawe znaki Ę (#144) oraz Ś (#152), pod Windowsem XP z poziomu tej samej aplikacji są konwertowane i drukowane prawidłowo, natomiast pod Windowsem 10 64bit nie (zamiast znaków drukują się puste spacje).

W Richedit, z którego drukuję te teksty, pod WinXP, po przekonwertowaniu np Ę, pojawia się taki charakterystyczny znak (kwadracik pusty w środku), który w druku daje literę Ę, natomiast pod W10, po przekonwertowaniu, w Richedit pojawia się puste pole i litera Ę (Ś oczywiście też) nie jest drukowana. Wszystkie inne polskie znaki konwertują się prawidłowo.

Co oni tam znowu naknocili w tym W10? :-)

No chyba, że to ja coś mam nie tak skonfigurowane w systemie?

0

Jaka wersja Delphi, i czy w obu przypadkach (XP i 10) mówimy o tej samej Delphi?

Co oni tam znowu naknocili w tym W10? :-)

Teoretycznie nic.

No chyba, że to ja coś mam nie tak skonfigurowane w systemie?

To jest polski Windows?

0

Delphi 2007, w obu przypadkach ta sama wersja, bo zarówno na jednym jak i na drugim Windowsie odpalam tę samą aplikację.

Oba Windowsy w wersji polskiej.

1
  1. jaka drukarka
  2. jak drukujesz (przez sterownik windowsowy, w języku drukarki)

Obsługuję dziesiątki etykieciarek, głównie zebry różne modele, ale i citizen, eos, bizerba. Jeśli drukuję przez sterownik windowsa to dla programu nie ma znaczenia czy to jest etykieciarka, czy np. zwykła atramentówka - po prostu piszę/rysuję po płótnie drukarki używając windowsowej strony kodowej i tyle. Przy korzystaniu z języka drukarki zazwyczaj można wybrać w jakiej stronie kodowej będą wysyłane do niej napisy (coś jak na starych igłówkach). Wg mnie ani w jednym ani w drugim przypadku windows nie ma nic do rzeczy.

BTW ja w przypadkach dziwnych zachowań drukarki wysyłam do niej całą tablicę znaków od 32 (spacja) do 254 i patrzę co wydrukuje :)

0

Zwróć uwagę, że jaka by to nie była drukarka to nie ma znaczenia, bo tak jak pisałem, problem powstaje już w momencie samej konwersji. Po zmianie Ę na #144 w Richedit w Win10 pojawia się puste pole (tak jak bym spację tam wstawił), w WinXP pojawia się wówczas ten taki charakterystyczny kwadracik, który po wydrukowaniu daje Ę.

Drukarka to jakiś noname od Chińczyka, drukuję przez sterownik drukarki.

0

Jeśli drukujesz przez sterownik windowsowy to on drukuje to co "widzi" - chcesz Ę to powinieneś do RichEdit wstawić Ę a nie #144.

0

@furious programming: Spotkałeś się może z takim przypadkiem?

0

@axel234: nie, nie spotkałem się. No i w sumie to nie korzystam z Delphi - lata temu przesiadłem się na Lazarusa.

1

Wg mnie korzystasz z nieprawidłowej strony kodowej dla polskich znaków. Kody polskich znaków, które podałeś odpowiadają mazovii (cp790), a dla cp1250 #144 to znak niezdefiniowany.

0
  1. Richedit obsługuje tekst w Uniocode. Już sam fakt że w Richedit (niezależnie od systemu) zamiast polskiego znaku masz kwadracik, powinien Ci dać do myślenia że coś jest nie tak.
  2. Pod XP używasz innego sterownika drukarki niż pod W10. Być może ten pierwszy jakoś sobie radził z "kwadracikami" drukując prawidłowo, ale to raczej przypadek a nie reguła.
  3. Punktem wyjścia powinno być uzyskanie prawidłowego kodowania tekstu w Richedit, bez żadnych "kwadracików" i innych "kwiatków", ergo, Twój problem nie dotyczy drukarki ale kodowania polskich znaków w Unicode, a nieprawidłowy wydruk to tylko skutek złego kodowania
0

@grzegorz_so: Czy jest możliwe, żeby ten sam Richedit, w tej samej aplikacji zachowywał się inaczej kiedy aplikację uruchamiam na W10 i inaczej (czyt. tak jak tego oczekuję) na WXP, z powodu nieprawidłowego kodowania w nim znaków? Pytam serio.

Jeszcze raz napiszę, że mam problem tylko z Ę i Ś. Wszystkie inne polskie znaki są konwertowane i drukowane, tak jak tego oczekuję na obu systemach.

0

to ja też napiszę jeszcze raz - zamiast dziwnych znaczków wpisz po prostu polską literkę - praw ALT + literka, bez kombinowania. Jeśli etykieciarka działa jako drukarka windowsowa to nie powinno* być problemu

  • o ile sama drukarka ogarnia to co do niej windows będzie wysyłał
0

Nie ogarnia i nigdy nie ogarniała. Zawsze miała zachcianki i wymagała, żeby jej konwertować te znaczki. Jak puszę jej normalny, polski, nie przekonwertowany znak, to drukuje krzaczory :-P

0

@axel234
Przepraszam, nie doczytałem że problem dotyczy D2007, a to trochę zmienia postać rzeczy i w tym Ci nie pomogę

0
for i:=128 to 255 do
  writeln_na_drukarkę(i, ' ', chr(i));

i znajdź sobie prawidłowe kody polskich znaków, będziesz równocześnie wiedział czy ich wydrukowanie jest w ten sposób możliwe.

0

Faktycznie, prosta metoda, nie wpadłem na nią.

Wyniki są takie:

202 wskazuje mi na literę Ę.
(pod 144 nie jest przypisany żaden znak i tu ukłon w stronę @Paweł Dmitruk)

title

No więc prostą metodą próbuję:

Richedit1.text:=#202;
Richedit1.Print('');

Do Richedit, na ekranie monitora zostaje po prostu wstawiona litera Ę, a na wydruku mam ten znaczek:

title

Czyli krótko mówiąc, zaczynam szukać w ustawieniach drukarki możliwości zmiany strony kodowej i wg mnie po jej zmianie, polskie znaki powinny się drukować już bez konwertowania.

Gdyby na obu Windowsach występował ten sam problem, od razu szukałbym przyczyny w drukarce, ale kłopot nie wystąpił na obu systemach, co mnie trochę zmyliło.

W związku z tym mam pytanie: jaka zmiana zaszła między Windowsem XP i Windowsem 10, powodująca, że #144 w XP drukuje na drukarce Ę, a #144 pod W10 drukuje pusty znak z poziomu tej samej aplikacji?
Czy to kwestia tego, że Microsoft coś pozmieniał, czy może jest to kwestia różnych ustawień systemu, które sam mógłbym zmienić i spowodować tym samym, że #144 na W10 też wydrukuje Ę?

0

W związku z tym mam pytanie: jaka zmiana zaszła między Windowsem XP i Windowsem 10, powodująca, że #144 w XP drukuje na drukarce Ę, a #144 pod W10 drukuje pusty znak z poziomu tej samej aplikacji?

Żadna, ale wygląda na to że aktywna strona kodowa drukarki jest ustawiana na poziomie sterownika, i na jednym systemie masz właściwą, a na drugim jakąś inną.

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