Delphi 7 i Chińskie znaki

0

Witam

w Delphi 4 miałem aplikację w języku Chińskim. Wszystko działało bez problemów do zeszłego tygodnia. Mój chiński przyjaciel przysłał mi nowy znak który nie jest już wyświetlany w programie. Czy ktoś może mi powiedzieć czy w Delphi 7 ten znak będzie wyświetlany poprawnie? czcionka w kontrolkach jest ustawiona na Chiński tradycyjny.

Chinski znak

pozdrawiam
IB

0

Z tego co pamiętam (aczkolwiek D7 już dawno nie miałem w ustach) to kiepsko (albo wcale) wygląda wsparcie dla Unicode w tym środowisku.

https://stackoverflow.com/questions/2281223/working-with-unicode-strings-in-delphi-7

3

Jeżeli inne znaki działają a 翺 nie to po prostu znaczy że nie ma go w użytym foncie i z jakiegoś powodu Windows nie potrafi podstawić znaku z innego fonta (może nie ma w żadnym?).

Jaki to Windows i jaki font jest użyty do wyświetlenia tekstu?
Jeśli Windows jest stary to sprawdziłbym pod Windows 10.

Delphi 7 raczej się nie różni w tej kwestii niczym od Delphi 4. Pełna obsługa Unicode weszła dopiero w delphi 2009.

0

Tak, tylko to nie jest wersja programu wielojęzyczna. Program jest tylko w wersji Chińskiej, nie posiadał kontrolek obsługujących Unicode tylko standardowe i pracował tylko na Chińskim windowsie i tak było do tej pory. Teraz pojawił się problem z tym nowym znakiem, reszta działa bez problemu. Co ciekawe tez znak wyświetla się poprawnie wyłącznie w kontrolce RichEdit ale już w TEdit i TMemo nie.

Tu jest opis tego znaku http://unicode.org/cldr/utility/character.jsp?a=7FFA mi niewiele mówiący. Font w całym programie był ustawiony na Arial i wszystkie chińskie znaki wyświetlały się poprawnie.

pozdrawiam
IB

2

Arial nie ma chińskich znaków. To znaczy że do tej pory Windows podstawiał znaki z innego fonta (pewnie PMingLiU), który może tak nietypowego znaku po prostu nie mieć.

https://www.pinyinjoe.com/windows-7/win7-chinese-fonts.htm

Spróbuj np. Microsoft JengHei, jeżeli taki jest.

Podaj wersję Windowsa.

1

Dawno nie używałem ale pamiętam że lata temu miałem podobny problem i pomogło https://github.com/rofl0r/TntUnicode pakiet zawiera podstawowe kontrolki i moduły dostosowane do Unicode.

0

Dzięki za pomoc. Użyłem Ariala z tego powodu że.....u mnie chińskie czcionki jakie mi podesłali z Chin, na kompie z win XP wyglądały dobrze i dobrze się pozycjonowały w kontrolkach np TLabel. Jednak kiedy program zostawał odpalany w Chinach czy na Taiwanie fonty zmieniały swoje pozycje podnosząc się do góry co nieładnie wyglądało. Tylko Arial zachowywał swoją pozycję i stąd jego użycie. Ja domyślam się że windows musiał podstawiać znaki z innego fontu ale ciekawe dlaczego tego znaku nie podstawia skoro w kontrolce richedit widać ten znak przy dokładnie takim samym ustawieniu nazwy czcionki ( Arial ) i charsetu. Spróbuję użyć tych kontrolek jednak teraz muszę cały program przebudować skoro nie mogę tego znaku poprawnie wyświetlać w dotychczasowej konfiguracji i to troche potrwa.

Co do windowsa 10 to przy takich ustawieniach systemu ( region, jezyk itp ) i czcionki Arial i charsetu GB2312 jak w winXP, wcale nie wyświetla chińskich znaków. Dopiero ustawienie charsetu na Default oraz zmiana czcionki na NSimSun skutkuje poprawnym wyświetlaniem chińskich znaków we wszystkich kontrolkach za wyjątkiem tego jednego znaku. I co ciekawe o ile w windowsie XP ten znak był poprawnie wyświetlany w RichEdit to w windowsie 10 nie jest przy żadnym ustawieniu wyświetlany. Być może to jednak musi to być kontrolka obsługująca Unicode aby ten znak został wyświetlony poprawnie. Tylko ciekawe dlaczego tylko ten znak nie jest obsługiwany a reszta jest.

pozdrawiam
IB

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