Thread Request mit POST (multipart/form-data) (4 answers)
Opened by MarkusH at 2021-03-14 18:46

haj
 2021-03-15 09:02
#193173 #193173
User since
2015-01-07
558 Artikel
BenutzerIn

user image
Da ist ein Fallstrick drin!

2021-03-14T18:12:52 GwenDragon
Quote
The optional $content argument should be a string of bytes.

Aus Deinem Code schneide ich nur einen kleinen Teil raus:
2021-03-14T18:12:52 GwenDragon
Code (perl): (dl )
1
2
3
4
my $login = {
   USERNAME => 'asdf', 
   PASSWORD => 'ääää',
};

Das ä ist einer der Buchstaben, bei denen die "bytes" davon abhängen, ob die Quelldatei als UTF-8-Datei abgespeichert ist. Wenn die Datei als UTF-8 abgespeichert ist, dann belegt ein ä zwei Bytes (A4 C3), ansonsten ein Byte (E4).

Wenn die Datei als UTF-8 abgespeichert wurde, dann wäre ein use utf8; angebracht, damit Perl das ä als solches versteht. Andererseits muss man sich dann selber ums Encoding kümmern, wenn der Server UTF-8 erwartet. Das Default-Encoding in Perl ist nämlich ISO-8859-1, und da gibt's eben das ä als Byte E4.

Wenn als UTF-8 abgespeichert wurde, aber kein use utf8; drinsteht, versteht Perl das Passwort als ä. Und wenn dann bei der Erstellung des Content kein Encoding durchgeführt wird, dann funktioniert es zufällig - die beiden Fehler heben sich auf. Von solchen Zufällen sollte man sich nicht abhängig machen, die sind nachträglich schwer zu reparieren.

View full thread Request mit POST (multipart/form-data)