[ruby-de] Gleiche ungleiche Strings

Martin J. Dürst duerst at it.aoyama.ac.jp
So Sep 3 19:17:52 JST 2017


Hallo Marvin,

Du kannst alles ein Bisschen besser verstehen, wenn Du Dir mal 
a.encoding und b.encoding anschaust. Du kannst auch sicherstellen dass 
Du das selbe Resultat erhälst mit
    b = 31.chr('utf-8')

Gruss,   Martin.


On 2017/09/03 18:54, Marvin Gülker wrote:
> Hallo Leute,
> 
> ich bin gerade über ein interessantes Verhalten von Ruby gestolpert. Es
> handelt sich um zwei inhaltlich identische Strings, die aber von
> #inspect unterschiedlich behandelt werden. Beispiel:
> 
>      % irb
>      irb(main):001:0> RUBY_DESCRIPTION
>      => "ruby 2.2.6p396 (2016-11-15 revision 56800) [x86_64-linux]"
>      irb(main):002:0> a = "\x1F"
>      => "\u001F"
>      irb(main):003:0> b = 31.chr
>      => "\x1F"
>      irb(main):004:0> a.bytes
>      => [31]
>      irb(main):005:0> b.bytes
>      => [31]
>      irb(main):006:0> puts a.inspect
>      "\u001F"
>      => nil
>      irb(main):007:0> puts b.inspect
>      "\x1F"
>      => nil
>      irb(main):008:0> a == b
>      => true
>      irb(main):009:0> a.eql?(b)
>      => true
> 
> Wie kann es sein, daß #inspect die Variable „a“ als „\u001F“ darstellt,
> die Variable „b“ dagegen als „\x1F“? Mir ist bewußt, daß damit kein
> inhaltlicher Unterschied verbunden ist, aber mich interessiert, weshalb
> die Notation durch #inspect anders ist, wo doch die beiden Strings auf
> Byteebene tatsächlich identisch sind.
> 
> Marvin
> 

-- 
Prof. Dr.sc. Martin J. Dürst
Department of Intelligent Information Technology
College of Science and Engineering
Aoyama Gakuin University
Fuchinobe 5-1-10, Chuo-ku, Sagamihara
252-5258 Japan


Mehr Informationen über die Mailingliste ruby-de