why does . match non-ascii chars?

7

7stud --

str = "abcdéf "

result = str.gsub(/./n) do |match|
puts "%%%02X" % match[0]
end
puts


--output:--
%61
%62
%63
%64
%C3
%A9
%66


Doesn't the 'n' option say to match ascii? For what it's worth, I get
the same result without the 'n' option.
 
M

Michael Fellinger

str =3D "abcd=C3=A9f "

result =3D str.gsub(/./n) do |match|
puts "%%%02X" % match[0]
end
puts


--output:--
%61
%62
%63
%64
%C3
%A9
%66


Doesn't the 'n' option say to match ascii? For what it's worth, I get
the same result without the 'n' option.

The default switch of a regex is actually 'n' already, that only
changes if you set $KCODE before.
It has little influence on what is matched when it comes to '.', but
it influences how the matched bytes will be grouped to resemble
characters.

sigma ~ % ruby -e 'p "abcd=C3=A9f ".scan(/./)'
["a", "b", "c", "d", "\303", "\251", "f", " "]

sigma ~ % ruby -e 'p "abcd=C3=A9f ".scan(/./u)'
["a", "b", "c", "d", "\303\251", "f", " "]

sigma ~ % ruby -Kue 'p "abcd=C3=A9f ".scan(/./u)'
["a", "b", "c", "d", "=C3=A9", "f", " "]

sigma ~ % ruby19 -e 'p "abcd=C3=A9f ".scan(/./)'
["a", "b", "c", "d", "=C3=A9", "f", " "]

Please see some excellent articles about this topic from James Edward Gray =
II:

http://blog.grayproductions.net/articles/bytes_and_characters_in_ruby_18
http://blog.grayproductions.net/categories/character_encodings

^ manveru
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top