Thread WWW::Mechanize und utf-8 (2 answers)
Opened by bytebrain at 2008-09-05 14:21

sid burn
 2008-10-10 13:25
#115364 #115364
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Hmm,
lass mich raten dein Editor selber speichert Dateien in UTF-8 Kodierung?

Wenn du bei Perl keine Angaben gibst dann sieht Perl den Sourcecode und alles andere als in ISO-8859-1 Kodiert an. Daher sieht Perl bei einem Passwort/Login wenn du ein Sonderzeichen nutzt zwei ISO-8859-1 Zeichen und nicht ein Zeichen in UTF-8 Kodierung.

Mithilfe von utf8::decode machst du dann folgendes das du Perl sagst der String UTF-8 Decodiert ist, und das er diesen bitte in in die interne Form umwandeln soll (was unicode ist).

Sinniger wäre es dann aber "use utf8;" zu nutzen. Damit sagst du Perl dann das der Sourcecode in utf8 Codierung gespeichert ist, und du musst nicht mehr manuell decodieren also utf8::decode aufrufen.

Ansonsten muss du bei allen Ein/Ausgabe entsprechend en/decoden. (Alles was rein kommt muss mit decode() behandelt werden, und alles was raus geht muss mit encode() behandelt werden). Wenn das Passwort also von der CLI vom Benutzer erfragt wird müsstest du ein decode machen.

Wenn du bei der Ausgabe kein encode() machst und Perl ein Unicode String hat wandelt er automatisch nach ISO-8859-1 codierung um!

Wenn WWW::Mechanize keine UTF-8 unterstützung hat oder generell Codierung nicht beachtet (Was bei Modulen von Programmieren aus Amerika schonmal öfters vorkommen kann) dann wandelt er dein Username/Passwort in ISO-8859-1 Codierung um. Je nach Username/Passwort kann es dann sein das es wieder nicht geht.

Btw. mach das encode/decode immer nur genau an den stellen wo du etwas ein/ausliest. Nicht irgendwo dazwischen.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread WWW::Mechanize und utf-8