Interactive Ruby i polskie znaki

Pisząc prosty program w Ruby napotkałem problem z polskimi znakami.
Na początku dodam że używam wersji 1.9.3 p484
Używając zarówno konsoli Interactive Ruby jak i edytora przy próbie posortowania tablicy z wyrazami zawierającymi polskie znaki napotkałem problem.
Próbując uruchomić poniższy program:

jezyki = ['Chiński', 'Holenderski', 'Angielski']
puts jezyki.sort.inspect

otrzymuję takie komunikaty.

invalid multibyte char (US-ASCII)
syntax error, unexpected $end, expecting ']'

Czy ktoś wie jak w konsoli Interactive Ruby ustawić stronę kodową UTF-8?
W notatniku dopisałem na początku # encoding: utf-8 ale nie rozwiązało to problemu :frowning:

Spróbuj:

force_encoding('utf-8')

np.

jezyki = ['Chiński', 'Holenderski', 'Angielski'].map{|i| i.force_encoding('utf-8') }
puts jezyki.sort.inspect

powinno zadziałać. Interactive Ruby jest dosyć specyficzny (rozumiem że używasz jakiejś wersji online).
Jeżeli z konsoli to uruchamiaj poprzez:

irb -EUTF-8

polecam: http://nuclearsquid.com/writings/ruby-1-9-encodings/

Dziękuję za szybką odpowiedź.
Próbowałem zrobić tak jak radziłeś, jednak nie powiodło się.

Gdy napisałem w notatniku skrypt według Twojego przykładu otrzymałem taki komunikat:

[Decode error - output not utf-8]
[Decode error - output not utf-8]
[Finished in 0.2s]

Z kolei gdy uruchomiłem w konsoli poleceniem:

irb -EUTF-8

otrzymałem następujące komunikaty:

irb(main):001:0> jezyki = ["Chiński", "Niemiecki", "Angielski"]
SyntaxError: (irb):1: invalid multibyte char (UTF-8)
(irb):1: syntax error, unexpected tIDENTIFIER, expecting ']'
jezyki = ["Chi?ski", "Niemiecki", "Angielski"]
                  ^
(irb):1: syntax error, unexpected tCONSTANT, expecting $end
jezyki = ["Chi?ski", "Niemiecki", "Angielski"]
                               ^
        from C:/Ruby193/bin/irb:12:in `<main>'
irb(main):002:0>

Miałem podobny problem, związane to było z ustawieniem innego języka i kodowania znaków w systemie operacyjnym. Sprawdź jaki masz język i kodowanie znaków ustawione w systemie.

Aaaaa teraz dopiero zauważyłem że używasz windowsa. Możesz dodać jakiej wersji używasz?
Windows z tego co pamiętam nie używa utf-8 tylko kodowanie CP-cośtam domyślnie. Pogooglaj “ruby windows utf”

Najlepszym rozwiązaniem twojego problemu jest instalacja linuxa (polecam dystrybucję Mint lub Kubuntu (nie Ubuntu))

Wafcio, Świstak84 dzięki za szybkie odpowiedzi :slight_smile:

Sprawdź jaki masz język i kodowanie znaków ustawione w systemie.

Kodowanie znaków w wierszu poleceń mam ustawione na 852

Możesz dodać jakiej wersji używasz?

Używam systemu Windows 7 HP z SP1 x64 w wersji polskiej.
Język mam ustawiony na polski (programisty)

Gdy w wierszu poleceń ustawiłem stronę kodową na utf-8 problem dalej pozostał :frowning:

zgadzam się z @swistak84 przesiądź się na linuxa, z windowsem daleko nie zajedziesz, a jeśli myślisz poważnie o ruby to tym bardziej linux.

Dziekuję wszystkim za pomoc i cenne wskazówki.
Jeżeli choddzi o problem polskich znaków w konsoli w Windows 7 to udało mi się rozwiązać problem przez ustawienie kodowania dla wiersza poleceń z 852 na 1250 i gdy uruchomie InteracitveRuby z konsoli poleceniem ‘irb’ to wtedy nie ma problemów z polskimi znakami
Macie racje warto żebym się przesiadł na linuksa. Jednak z różnych wzgledów od razu taka przesiadka byłaby kłopotliwa bo i tak czasami używałbym Windows. Dlatego będę szukał rozwiązań problemów, które pojawią się pod Windows 7. A gdy będę umiał w Ruby więcej niż podstawy to z pewnością zacznę używać go pod Linuksem.

Jakie problemy? Z Virtual box?

Jakie problemy? Z Virtual box?

Masz rację Virtual Box to dobre rozwiązanie. Ale np: jak ktoś używa Online Armor Firewall to może mieć małe kłopoty z Virtual Box’em :wink:

Jakie kłopoty? wprawdzie nie używalem Online Armor Firewall ale wygląda to na normalną aplikację typu Firewall, i nawet jakby zablokował tobie virtualboxa, to można go dodać do wyjątków.

Jakie kłopoty? wprawdzie nie używalem Online Armor Firewall ale wygląda to na normalną aplikację typu Firewall, i nawet jakby zablokował tobie virtualboxa, to można go dodać do wyjątków.

Tutaj jest opisane co wywołuje błędy i dlaczego OA i VirtualBox nie współpracują zbyt dobrze. Dokładnie wyjaśnił to Eugeniusz w poście z 12 sie 2013, 20:11