Strange problem with CSV and funny chars
Colin Law
clanlaw at googlemail.com
Sun Dec 5 18:22:53 UTC 2010
I am using CSV in a rake task (db:seed) on Rails 3.0.3, Ruby 1.9.2 to
read a file with some funny chars in it. Upon breaking in at a point
where the row read using CSV is in variable row, with the string with
the char in row['price'] I get the following strange results which I
cannot understand.
(rdb:1) row['price']
"\xA32.00"
(rdb:1) row['price'][0]
"\xA3"
(rdb:1) row['price'][0] == "\xA3"
false
(rdb:1) row['price'][0].each_byte{|c| print c, ' '}
163 "\xA3"
(rdb:1) "\xA3".each_byte{|c| print c, ' '}
163 "\xA3"
(rdb:1) "\xA3".class
String
(rdb:1) row['price'][0].class
String
(rdb:1) row['price'][0] <=> "\xA3"
-1
(rdb:1) "\xA3" <=> row['price'][0]
1
(rdb:1) row['price'][0].length
1
(rdb:1) "\xA3".length
1
So it appears that "\xA3" and row['price'][0] are both strings of
length 1 and both contain the byte value 163 yet "\xA3" is definitely
greater than row['price'][0]
If I do c1 = row['price'][0] and c2 = "\xA3" I still get the same
effect. The variables c1 and c2 contain the same data but are
different when compared.
No doubt I am doing something stupid, if someone could point out what,
then I would be most grateful.
Colin
More information about the ubuntu-users
mailing list