Son zamanlarda Ruby chr
ve ord
yöntemleri ile çalışıyorum ve anlamadığım birkaç şey var.Ruby .chr ve .ord yöntemlerini anlamaya çalışıyorum
Şu anki projem, tek tek karakterlerin sıra değerlere ve sıra değerlerine dönüştürülmesini içeriyor. Anladığım kadarıyla, "A" gibi bir karakterle bir dizim varsa ve üzerinde ord
numaralı telefonu ararsanız, 65 değeri ASCII tablosundaki konumunu alırım. Tersi çağrıldığında, 65.chr
bana "A" karakter değerini verir. bu bana Ruby'nin karakterli karakter değerlerinin bulunduğu bir koleksiyona sahip olduğunu ve bu koleksiyonu belirli bir karakterin veya karakterin belirli bir pozisyondaki karakterini vermek için kullanabileceğini söyler. Bu konuda yanlış olabilirim, lütfen beni düzeltin.
Şimdi, Ruby'nin varsayılan karakter kodlamasının UTF-8'i kullandığını ve binlerce karakterle çalışabildiğini anlıyorum. Böyle bir şey için sormak Böylece eğer:
22909.chr
ben "RangeError olsun:
'好'.ord
O değerine chr
ararsanız ben Ancak 22909. olduğunu karakterin pozisyonunu almak: 22909 aralığın dışında. " Sadece ASCII genişletilmiş 255'e kadar olan değerler üzerinde çalışmak için char
elde edebiliyorum. Yani benim sorular şunlardır:
- Neden Yakut set genişletilmiş ASCII karakter
chr
değerlerini alma gibi görünüyor ama UTF-8 denord
geliyor? - Ruby'ye bu yöntemleri kullandığında farklı kodlamaları kullanmasını söylemenin bir yolu var mı? Örneğin, varsayılan değer ne olursa olsun ASCII-8BIT kodlamasını kullanmasını söyle?
- Varsayılan kodlamayı değiştirmek mümkün ise, kullanılan sette bulunan toplam karakter sayısını elde etmenin herhangi bir yolu var mı?
http://apidock.com/ruby/Integer/chr '22909.chr (Encoding :: UTF_8) '' gibi bir şey kullanabileceğinizden bahseder. Kodlama, bunun yerine kullanmak istiyorsanız, '' Encoding :: ASCII_8BIT'' seçeneğine de sahiptir. –
@NabeelAmjad Bunu bir cevap olarak göndermelisiniz. –
Bu çok yardımcı oldu, bunu görmemiştim ve bu bana nereye gideceğime uzun bir yol katıyor. Şimdi, eksik olan tek şey, belirli bir kodlama için mevcut olan karakter sayısını elde etmenin basit bir yoludur. Örneğin ASCII_8BIT, 256 karakterden, yaklaşık 1 UTF_8 değerine sahiptir.1 milyon, ekt. Ve evet, lütfen cevap olarak gönderin. –