Hallo pl,
Dein script jedoch schickt die Ausgabe nicht direkt an den Browser sondern nach STDOUT.
Das ist falsch. Rails ist nicht Perl und arbeitet nicht über CGI. Bei Rails wird ein Application Server gestartet, hier wird direkt in einen Socket geschrieben.
Auch das ist Bytesemantic. Socket ist IO.
Du schreibst „nicht direkt an den Browser sondern nach STDOUT“ - das ist nachweisbar falsch und hat nichts mit „Bytesemantic“ oder ähnlichem zu tun.
D.h., wie die Zeichen danach kodiert sein sollen, muss Dein Script gar nicht wissen.
Das ist falsch. Ruby ist nicht Perl. (Und auch in Perl ist das nicht vollständig richtig, schlage unter
use utf8
nach). Ruby geht prinzipiell erstmal davon aus, dass der Sourcecode in UTF-8 vorliegt.IO war schon immer Byte-Semantic.
Das ist nicht richtig. Ruby unterscheidet auch bei I/O zwischen den Encodings, und auch Perl tut das. Oder was meinst du, wofür
open(my $fh, "<:encoding(UTF-8)", "filename")
|| die "can't open UTF-8 encoded filename: $!";
das UTF-8
hier steht? Zur Zierde? Auch Perl kann I/O-Processing. Die Zeiten haben sich weiterentwickelt. Dass, was man damals[tm] gemacht hat, direkt die Bytes zu manipulieren, das macht man heute eigentlich nur noch in PHP und den Low-Level-Sprachen. Die anderen Sprachen haben heutzutage eingebauten Unicode-Support (der war in PHP auch geplant, wurde dann aber zusammen mit Version 6 gestrichen).
Und im konkreten Fall: nein. Ruby muss wissen, welches Encoding die Daten haben, weil es einem sonst um die Ohren fliegt.
Und es gab auch hier im Forum schon mal Leute, die das begriffen hatten. Ist aber schon paar Jahre her und die sind längst weg.
Du musst nicht denken, dass ich nicht verstehe, worauf du hinaus willst. Es ist nur so, dass sich in den letzten Jahren viel verändert hat.
LG,
CK