2009-11-16 13 views
192

2.3.4 yaptığım başvuru (iç tırnak gibi bir şey denerseniz metin girişgeçersiz baytlı karakter Rails ile (US-ASCII) ve Ruby 1.9 Ruby kullanıyorum

idare etmektir Rails ile 1.9.1 o tırnak işareti kullanıcıya ihtiyaç

#<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 

kullanıcıları girişi bunları olabilir gibi ve bunun için hesap vermek zorunda:

text = "”“" 

aşağıdaki hatayı alıyorum) farklı görünüyor?

Herhangi bir fikrin var mı? Bu çift eğimli çizgiler, ASCII karakterleri değillerdir.

+0

kodunuzu herhangi komutu ters tırnak yoksa Ama sen backticks kullanarak "suçlanıyorsun", dosyada bazı tuhaf boşluklar/sekmeler/yeni satır sorunları olabilir. Örneğin bir StackOverflow boşluğuna yazmayı deneyin, ve SO garip davranmaya başlayacaktır. Garip boşlukları ve sekmeleri ve satır sonlarını kaldırın. Yine, kodu bir SO boşluğuna yapıştırmak ve kodunuzu sunum için biçimlendirmeye çalışmak, kendinize bir ipucu vermenin bir yoludur. –

cevap

6

Hata mesajı 'multi-bayt' olmaları konusunda yanıltıcıdır.

+2

Neden yanıltıcı? Onlar * çok baytlı karakterlerdir. –

+4

ASCII, herhangi bir çoklu bayt kodlaması tanımlamıyor. ASCII söz konusu olduğunda, bunlar ilgili bir kodlamada geçerli olan anlamsızdır. – Novelocrat

685

ASCII olmayan karakterleri kullandığınız komut dosyasında sihirli bir yorum eklemeyi denediniz mi? Senaryonun üstüne gitmeli.

#!/bin/env ruby 
# encoding: utf-8 

Benim için cazibe gibi çalıştı. kolayca bir projenin tüm kaynak dosyaları üzerinde sihirli bir yorum eklemek istiyorsanız

+2

Hmm ......... dosyanın üstüne ancak yine de aynı hata mesajını ekledim. Baska öneri? –

+0

@ArtemKalinchuk Sadece '#!/ bin/env ruby' Aralarında boş bir çizgi vardı ve işe yaramadı. – Thomas

+8

Merkezi açıklama, @dalyons bağlantılı makalede bulunabilir: Aksi belirtilmedikçe _source dosyaları US-ASCII Kodlama alır. Kaynak Kodlama değiştirmeden bir String literal herhangi bir ASCII olmayan içerik yerleştirirseniz, Ruby o error._ ile ölecektir. Teşekkürler çocuklar, sonunda :-) –

43

uygulamanıza kökünden terminalde magic_encoding gem

sudo gem install magic_encoding 

sonra sadece çağrı magic_encoding kullanabilirsiniz.

+0

Bence bu tür ayrıntıları hatırlamak önemlidir, bu yüzden ben en az birkaç ay # kodlama: utf-8 elle yazma için bu gem kullanmazdım. –

+0

'gem magic_encoding' gemfile rails 2.3 & ruby ​​1.9 ekleyerek – Elmor

+0

ekleyerek bu salatalık testlerine entegre değildir. – Trip

6

Sadece Ruby 2.0'dan itibaren # encoding: utf-8'u eklemenize gerek yok. UTF-8 otomatik olarak algılanır.

$ export LC_ALL=en_US.UTF-8 
$ export LANG=en_US.UTF-8 
3

.

senin Kontrolör üstüne bu kodu ekleyin:
@Jarek Zmudzinski sadece çalıştığını, ama burada benim nasıl söylemiştim # encoding: UTF-8

örneği (örnek umlauts ile flaş mesajı kullanmak için) benim Kontrol Cihazının:

# encoding: UTF-8 
class UserController < ApplicationController 

Şimdi kullanabilirsiniz ö, ä, ü, ß, "" vb

16

sadece benim çözüm eklemek istiyorum::

Ben ö, ü, ä gibi Alman umlauts kullanan ve aynı hata var benim için çalıştı