Ruby PHP'nin Çokbaytlı dize sorunu paylaşıyor mu?

2 Cevap php

PHP Çokbaytlı dizeleri (ASCII olmayan karakterler) ile bir sürü sorun vardır. Tüm dil her karakter bir bayt olduğunu varsayarak inşa edilmiştir. Bunu çözmek için onlar (iyi çalışır) standart fonksiyonları yerine kullanabileceğiniz mb_strings işlevleri icat.

strlen($str);
mb_strlen($str); // correct

Eğer online / bulmak indir kod bu işlevleri kullandığını doğrulamak ya da sonra aslında char = byte hesaplamaları gerekiyor bazı kodu kırmak olabilir mb_string_overload etkinleştirmek beri Ancak, bu gerçekten bir ağrı .

Yakut bu sorunu paylaşır mı?

2 Cevap

Ben Ruby 1.9 Bu underlaying varsayımı temizler düşünüyorum

Bu sorunu paylaşır. Burada SO ile kaplı. Sen ActiveSupport::Multibyte mb_chars destek için kullanabilirsiniz.

>> s =  "Iñtërnâtiônàlizætiøn"
=> "Iñtërnâtiônàlizætiøn"
>> puts s[0..3]
Iñt
=> nil
>> puts s.mb_chars[0..3]
Iñtë
=> nil
>> puts s.mb_chars.size
20
=> nil
>> puts s.size
27
=> nil