Używam Ruby 1.9.1 z Railsami 2.3.4 Moja aplikacja obsługuje przetwarzanie tekstu
Jeśli spróbuję czegoś takiego (znaki cudzysłowu wyglądają inaczej)
text = "”“"
Otrzymuję następujący błąd:
#<SyntaxError: /Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: syntax error, unexpected $end, expecting keyword_end
Muszę użyć tych znaków cudzysłowu, ponieważ użytkownicy mogą je wprowadzać i muszę to uwzględnić?
Jakieś pomysły?
Odpowiedzi:
Czy próbowałeś dodać magiczny komentarz w skrypcie, w którym używasz znaków spoza ASCII? Powinien być na górze skryptu.
To działało dla mnie jak urok.
źródło
#!/bin/env ruby
nie jest konieczne, chyba że uruchamiasz skrypt z wiersza poleceń jako plik wykonywalny.# encoding
Linia działa sama.# encoding: utf-8
. Jest koniec 2013 roku i nadal musimy grać w tę grę. Poczekaj, dzwoni telefon ... To był 2033, zadzwonili, żeby powiedzieć, że wciąż w to grają. No cóż, dzięki za przypomnienie, Jarek Żmudziński z 2010 roku.Jeśli chcesz łatwo dodawać magiczne komentarze do wszystkich plików źródłowych projektu, możesz użyć
magic_encoding
klejnotua następnie po prostu zadzwoń
magic_encoding
do terminalu z katalogu głównego aplikacji.źródło
magic_encoding
to tylko narzędzie wiersza polecenia, a nie zależność od projektu.Chcę tylko dodać moje rozwiązanie:
używam niemieckich umlautów takich jak ö, ü, ä i mam ten sam błąd.
@Jarek Żmudziński właśnie powiedział ci, jak to działa, ale oto mój:
Dodaj ten kod na górze kontrolera:
# encoding: UTF-8
(na przykład, aby użyć wiadomości flash z umlautami)
przykład mojego kontrolera:
Teraz możesz używać ö, ä, ü, ß, „” itp.
źródło
Te ukośne podwójne cudzysłowy nie są znakami ASCII. Komunikat o błędzie wprowadza w błąd, ponieważ są one „wielobajtowe”.
źródło
Tylko uwaga, że od Ruby 2.0 nie trzeba dodawać
# encoding: utf-8
. UTF-8 jest wykrywany automatycznie.źródło
To działało dla mnie:
źródło