Główna : błędy

Nr  Opis  Stan  Zgłaszający  Przypisany do  Dodano 
517  Przy kodowaniu UTF-8 backspace nie działa dobrze kiedy kasuje się polskie znaki.  odrzucony   Malven    5.5.2005 22:53 




Komentarze:

Autor  Treść 
Lam 
6.5.2005 11:18 
Jest to wina obsługi echa lokalnego przez Twój telnet.

Konkretnie, chodzi o obsługę "canonical input" przez twój pseudoterminal. Sprawdź np. taką sytuację: odpal "cat", wpisz "óó" i naciśnij dwa razy Backspace - oba "ó" znikną, wciśnij Enter - okazuje się, że w buforze pozostało jedno "ó". Linux od pewnego czasu obsługuje flagę IUTF8 włączaną przez polecenie "stty iutf8", jednak potrzeba do tego stty z coreutils 5.3.0 (niedawno wydana wersja rozwojowa, aktualna stabilna wersja dostępna we wszystkich dystrybucjach to 5.2.1, przy czym łaty były dostępne jeszcze za czasów, jak nie było coreutils, a były oddzielne sh-utils i inne, tylko że dopiero rok temu wciągnęli ją do pnia, cycochy).

Osobną kwestią jest obsługa "ą", "Ś" i "Ń" przez telnet, którego używam - wpisanie "ą" i próba wysłania powoduje wyłączenie echa lokalnego, ponieważ drugim znakiem kodu literki "ą" jest ^E (telnet myśli, że to wciskasz, przez to też nie wysyła "ą"). Analogicznie, drugim znakiem "Ś" jest ^Z, a drugim znakiem "Ń" jest ^C, oba te znaki zupełnie zawieszają telnet. Aby temu zaradzić, należy telnetowi wydać polecenia "unset echo", "unset susp" i "unset interrupt" lub ustawić te zmienne na inne wartości (co mi jest zbędne, nigdy tego nie używam, zresztą zawsze mogę wcisnąć ^] i wydać potrzebne polecenia ręcznie). Ja zrobiłem sobie plik ~/.telnetrc o treści:
lac.pl unset echo
lac.pl unset susp
lac.pl unset interrupt
Zamiast lac.pl można wpisać DEFAULT, wtedy ustawienia będą obowiązywały dla innych adresów, z którymi się próbujesz łączyć.

Po wydaniu polecenia stty iutf8 i ustawieniu telneta wszystko działa jak należy.

Z tego, co mi mówiono, PuTTY poprawnie obsługuje wyżej wspomniane niuanse obsługi UTF-8.

Poza tym nie jest to absolutnie wina Laca, odrzucam. 




Główna : błędy