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']
(rdb:1) row['price'][0]
(rdb:1) row['price'][0] == "\xA3"
(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
(rdb:1) row['price'][0].class
(rdb:1) row['price'][0] <=> "\xA3"
(rdb:1) "\xA3" <=> row['price'][0]
(rdb:1) row['price'][0].length
(rdb:1) "\xA3".length

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.


ubuntu-users mailing list
Modify settings or unsubscribe at: