irb UTF-8 und Umlaute

max93

Well-Known Member
Hallo!

Ich versuch mal hier Hilfe zu bekommen, da ich mit Suchmaschinen bei dem Thema nicht wirklich weiterkomme.

Wenn ich in einer Shell von einem macOS auf einen FreeBSD 10.3 mit LANG=en_US.UTF-8 mit 'irb' eine interaktive Ruby (2.4) Shell aufmache und dort 'äöü' eintippe, dann erscheint da 'äöü'. Wenn ich .encoding anhänge meint er, das ist in UTF-8, was offensichtlich Quatsch ist. In der Shell (egal ob mit oder ohne screen) werden die Umlaute korrekt dargestellt.

Wenn ich mir die Umlaute mit .bytes in Dezimal ausgeben lasse, dann gilt:
ä=195, 131, 194, 164
ö=195, 131, 194, 182
ü=195, 131, 194, 188

Offensichtlich irgendwas Multi-Bytiges was aber völlig falsch angezeigt wird. Lt. einer UTF-8 Tabelle sollte ä=195, 164 sein was die beiden anderen Bytes dazwischen erzeugt ist mir schleierhaft bzw. könnte es auch Zufall sein, weil die tatsächlich aber falsch angezeigten Zeichen eben 195, 131 (das A mit Tilde) und 194, 164 ("Currency Sign") entsprechen, dann wurde da aber etwas dazugedichtet. Was gegen reinen Zufall spricht ist der Umstand, dass das gleiche Schema für ö und ü auch gilt.

Zur Verdeutlichung nochmal C&P aus dem Terminal:

Code:
root@build01:~# echo "äöü"
äöü
root@build01:~# irb
irb(main):001:0> "äöü"
=> "äöü"
irb(main):002:0> "äöü".encoding
=> #<Encoding:UTF-8>
irb(main):003:0> "äöü".bytes
=> [195, 131, 194, 164, 195, 131, 194, 182, 195, 131, 194, 188]

Kennt das Problem hier zufällig irgendjemand?

Ciao.
Max
 
Falls da nochmal jemand drüberstolpert:

Verwendet man - eine Standardoption des Ports - libedit, dann hat man das Umlaut-Problem. Stellt man das auf libreadline um, gehen auch die Ümläütê in der Shell.

Ciao.
Max
 
Zurück
Oben