Ruby共享PHP的多字节字符串问题吗?

时间:2010-01-01 17:53:07

标签: php ruby string

PHP在多字节字符串(非ASCII字符)方面遇到很多麻烦。假设每个字符都是一个字节,构建整个语言。为了解决这个问题,他们发明了mb_strings函数,您可以使用这些函数代替标准函数(可以正常工作)。

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

然而,这确实很痛苦,因为您必须验证您在线下载/查找的代码是使用这些函数还是启用mb_string_overload,然后可能会破坏一些实际需要char = byte计算的代码。

Ruby会分享这个问题吗?

3 个答案:

答案 0 :(得分:5)

它分享了这个问题。这里有SO。您可以ActiveSupport::Multibyte使用mb_chars支持。

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

答案 1 :(得分:1)

irb(main):002:0> 'ÿ'.length
=> 2

答案 2 :(得分:1)

我认为Ruby 1.9清除了这个底层假设