Witam! Mam taki problem, jak wczytuje metodą “gets” jakąś linie z polskimi znakami, to wyrzuca mi później błąd, gdy chce użyć na tej linii (stringu) jakiejś metody np. size, length itp. Natomiast, jak przypiszę do zmiennej np. napis = “ąćżź” to wszystko jest OK (mogę na niej wykorzystywać wszystkie metody). Proszę o pomoc w rozwiązaniu problemu. Poniżej daje przykładowy kod:
encoding: UTF-8
napis = “ążźć”
puts “jest dobrze #{napis.length}”
nowy = gets
puts nowy.length # i tutaj wywal mi błąd
KOMUNIKAT błędu: in ’ ’ undefined method ‘length’ for nil:NilClass ( NoMethodError )
Już wiem w czym jest problem. Chodzi o konsolę windowsową cmd, jeśli ustawie kodowanie chcp 65001 wtedy przy wczytaniu gets’em i wywołaniu jakiejś metody na tym stringu wywala in ’ ’ undefined method ‘length’ for nil:NilClass ( NoMethodError ). Jeśli natomiast nie zmienię kodowania, tylko pozostawię domyślne to wszystko jest OK. Niestety wtedy przy wypisywaniu polskich nazw z pliku na konsolę będą krzaczki .
Zmniejszy się Twoja produktywność: drastycznie w pierwszych dwóch tygodniach, mocno w pierwszych dwóch miesiącach. Później będziesz bardziej produktywny na Linuksie niż kiedykolwiek mogłeś być na Windows.
Czym są dwa miesiące wobec całego życia z systemem, który Ci pomaga a nie rzuca kłody pod nogi?
Ewentualnie z mniej inwazyjnych rozwiązań (chociaż też bym polecał zmianę systemu) - zmień cmd na powershella (tam jest sensowniejsza obsługa kodowań ztcp).
Wersja Rubiego chyba nie ma tutaj znaczenia - pod Windowsem nie da się używać polskich znaków w konsoli, nie będą także one poprawnie wyświetlane.
Napiszę Tobie to, co wiele razy powtarzano na tym forum - jeśli chcesz na poważnie zająć się pisaniem w Ruby, to zmień system (ewentualnie pozostaje Ci wirtualizacja). Od tygodnia siedzę na Ubuntu i pisanie w Ruby na tym systemie jest o niebo przyjemniejsze.
Wersja Rubiego chyba nie ma tutaj znaczenia - pod Windowsem nie da się używać polskich znaków w konsoli, nie będą także one poprawnie wyświetlane.[/quote]
Dlaczego tak sądzisz?
C:\tmp>ruby x.rb
jest dobrze 4
ąęć
4
U mnie działa ;).
Generalnie pod XP pod standardową konsolą polskie litery wyświetlały się tylko po wklepaniu chcp 65001, co przy okazji powodowało inne niedogodności (jak na przykład ten opisany w trzecim poście).
Generalnie pod XP pod standardową konsolą polskie litery wyświetlały się tylko po wklepaniu chcp 65001, co przy okazji powodowało inne niedogodności (jak na przykład ten opisany w trzecim poście).[/quote]
Jakiś windows xp. Polskie znaki w takiej formie jak wyżej powinny działać zawsze. Skrypt rubiego nie ma tu nic do gadania, wczytuje podane bahty i w takiej samej postaci je wypisuje, nie mając pojęcia co siedzi w środku.