2010-09-10 11 views
5

Sadece Ruby 1.8'den 1.9'a yükseltildim ve metin işleme komut dosyalarının çoğu artık invalid byte sequence in UTF-8 hatasıyla başarısız oluyor. Geçersiz karakterleri çıkarmam veya Ruby'nin ASCII kodlamasını kullanması gerektiğini (veya C stdio işlevlerinin kodlanması ne yazıyorsa, dosyaların nasıl üretildiğini yazmalıyım) belirtmeliyim - bu şeylerden herhangi birini nasıl yaparım?ASCII kodlu dosyaları Ruby 1.9 ile UTF-8 ortamında okuma

Tercihen, ikinci diskte dosyaları ile yanlış bir şey yok (anlarım olduğunca yakın) - çünkü nedir

+0

Sorunun başlığı değiştirilebilir mi? Çünkü cevap artık soru için değil. Şerefe ~ – lulalala

+1

Ah, iyi çağrı. Bitti. – Doches

cevap

1

... garip, geçersiz karakterler varsa onlar benim editör görünmüyor yerel ayarınız kabukta mı ayarlandı? Linux tabanlı sistemlerde, locale komutunu çalıştırarak bunu kontrol edebilirsiniz ve bunu ör.

$ export LANG=en_US 

Benim tahminim UTF-8 kodlaması var ve bu yakut metin dosyaları utf-8 kodlama kurallarına göre oluşturulmuş olduğunu varsaymak neden olan yerel ayarları kullanarak olmasıdır. C-kabuk türevleri vardır - Sen iyice

(kod örnekleri bash veya benzeri kabuk varsayalım http://blog.grayproductions.net/articles/ruby_19s_string

tavsiye dize kodlama Ruby 1.9 içinde nasıl değiştiğini daha genel bir tedavi için

$ LANG=en_GB ruby -e 'warn "foo".encoding.name' 
US-ASCII 
$ LANG=en_GB.UTF-8 ruby -e 'warn "foo".encoding.name' 
UTF-8 

deneyerek görebilirsiniz Farklı)

+1

Mükemmel. Sanırım bu, kodlamayı önemsemeden veya ana dili İngilizce olan bir kişi olmaksızın C'nin etrafındaki dizeleri askıya almak için yaptığım karmik cezadır. – Doches

+0

@Doches: Öyleyse, sen * gerçek ismimi kullanmama izin vermeyen tüm uygulamaları yazan adamsın. Btw: bir sorun olduğunu kabul ilk ... bla bla bla :-) –

İlgili konular