Reputation: 20815
I have the following file:
# encoding: UTF-8
a = 1 << 7
puts a.chr.encoding
This gives me back ASCII-8BIT
. Why doesn't this give back UTF-8
and I would expect?
Upvotes: 1
Views: 192
Reputation: 18464
chr
has a encoding parameter, defaulting to US-ASCII, when char is < 0x80
and ASCII-8BIT for < 0xff
(there UTF is identical to ASCII):
65.chr.encoding # => #<Encoding:US-ASCII>
128.chr.encoding # => #<Encoding:ASCII-8BIT>
255.chr.encoding # => #<Encoding:ASCII-8BIT>
256.chr.encoding # => RangeError: 256 out of char range
Encoding.default_internal = Encoding::UTF_8
65.chr.encoding # => #<Encoding:US-ASCII>
255.chr.encoding # => #<Encoding:ASCII-8BIT>
256.chr.encoding # => #<Encoding:UTF-8>
65.chr(Encoding::UTF_8).encoding # => #<Encoding:UTF-8>
128.chr(Encoding::UTF_8).encoding # => #<Encoding:UTF-8>
500.chr(Encoding::UTF_8).encoding # => #<Encoding:UTF-8>
Upvotes: 3