字符串#[]Ruby 1.8.7和1.9.3之间的差异

字符串#[]Ruby 1.8.7和1.9.3之间的差异,ruby,Ruby,我正在尝试升级一个旧的rails 2.x/ruby 1.8.7应用程序,但我 遇到问题。我的代码中有字符串\200\001\002\004\b\020 我有一些东西看起来像: "\200\001\002\004\b\020"[0] 在1.8.7中,返回Fixnum128。但在ruby 1.9.3(及更新版本)中 返回字符串\x80 我的问题分为两部分:第一,这里发生了什么,第二,我该怎么做 获取与更新版本的1.8.7中返回的内容类似的行为 鲁比 更新#1 正如一些人所建议的

我正在尝试升级一个旧的rails 2.x/ruby 1.8.7应用程序,但我 遇到问题。我的代码中有字符串
\200\001\002\004\b\020
我有一些东西看起来像:

"\200\001\002\004\b\020"[0]
在1.8.7中,返回Fixnum
128
。但在ruby 1.9.3(及更新版本)中 返回字符串
\x80

我的问题分为两部分:第一,这里发生了什么,第二,我该怎么做 获取与更新版本的1.8.7中返回的内容类似的行为 鲁比

更新#1 正如一些人所建议的那样,我尝试了
“\200\001\002\004\b\020”。字节[0]
,但这不起作用(但在
2.3.1
中确实起作用),因为它与以下错误有关:

 NoMethodError: undefined method `[]' for #<Enumerator: "\x80\u0001\u0002\u0004\b\u0010":bytes>
NoMethodError:未定义的#
给出一个字符代码。 返回一个子字符串

要获取旧的行为,请使用
“\200\001\002\004\b\020”。字节。To_a[0]

给出字符代码。 返回一个子字符串


要获取旧行为,请使用
“\200\001\002\004\b\020”.bytes。要获取旧行为,请使用
String\getbyte
,如下所示:

“\200\001\002\004\b\020”。getbyte(0)


要获取旧行为,请使用
String#getbyte
,如中所示:

“\200\001\002\004\b\020”。getbyte(0)


这在
1.9.3
中不起作用。但是,它在较新版本(在
2.3.1
上验证)中确实有效。这在
1.9.3
中不起作用。但是,它在较新版本(在
2.3.1
上验证)中确实有效。这在
1.9.3
中不起作用。但是,它在较新的版本中也能工作(在
2.3.1
上验证)。Blegh。我手边没有1.9.3的repl。可能必须调用_a以使字节枚举器可索引。这在
1.9.3
中不起作用。但是,它在较新的版本中也能工作(在
2.3.1
上验证)。Blegh。我手边没有1.9.3的repl。可能必须调用_a以使字节枚举器可索引。