Strange problem with CSV and funny chars



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

--
ubuntu-users mailing list
ubuntu-users@xxxxxxxxxxxxxxxx
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-users