Thread MSSQL SELECT * liefert falsche Feldnamen
(28 answers)
Opened by stefan at 2023-07-21 11:01
Hi Stefan,
der Webserver kommuniziert mit Perl über STDIN, STDOUT, das ist der Common Gateway im Sinne CGI. Auf diesem Gateway gilt die Bytesemantics, um diese sicherzustellen, setze mal: in Deinem Perlscript. Evntl. ändert das was. Deine Konsole setzt ebenfalls die Bytesemantics durch, denn Ausgabe ist IO und da gilt Bytesemantics. Was Deine Konsole diesbez. macht kannst Du testen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/usr/bin/perl use strict; use warnings; binmode STDIN; binmode STDOUT; # Ausgabe der Bytes utf8-kodiertes ä printf("Oktetten ä: %s\n", pack("CC", 0xC3, 0xA4)); # lese STDIN print "Lese aus der Pipe:\n"; while( read(STDIN, my $bin, 1)){ printf "%X\n", unpack("C", $bin); } wobei 0xD, 0xA die Bytes für das Ende der Eingabe sind. Das 'ä' selbst wird als ein Byte mit der Wertigkeit 0x84 (dezimal 132) gelesen, UTF-8 ist das nicht sondern Codepage 850. Guck doch mal wie das bei Dir aussieht. PS: UTF-8 in der Windows-CMD geht übrigens so: Code: (dl
)
1 C:\Users\49162\Desktop>mode con: cp select=65001 Und danach sieht Ergebnis meines Scripts so aus: Wenn wir das haben, können wir sicher sein daß bei einer Eingabe über die Console auch die richtigen utf-8-kodierten Oktetten im Script ankommen. Last edited: 2023-07-27 16:54:24 +0200 (CEST) |