Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]13005[/thread]

wieder mal Umlaute bei cgi Parameter

Leser: 4


<< >> 10 Einträge, 1 Seite
chris-
 2009-01-15 18:25
#118035 #118035
User since
2007-10-18
18 Artikel
BenutzerIn
[default_avatar]
Hi,

habe mich durch das Forum gewühlt, jedoch nichts gefunden, dass mir weiter hilft.

Ich habe ein Script, dass die HTML-Ausgabe in utf8 bringt. Die Anzeige funzt auch. Jedoch werden die Umlaute in den einzulesenden Parametern nicht korrekt gehandhabt. Hier der Ausschnitt:
Code: (dl )
1
2
3
4
5
6
7
  my $HOST_OK_CHARS='-a-zA-Z0-9_.öüäÖÜÄ';
...
my $query = new CGI;
$query->charset('UTF-8');
...
my $hostname =$query->param('hostname');
$hostname =~ s/[^$HOST_OK_CHARS]/_/go;


Sobald ich Umlaute eingebe, werden die durch '_' ersetzt.
Wenn ich statt ä ein ö eingebe, funzt das Ding.
Da ist doch etwas mit der Codierung im Argen? Hat wer eine Idee?

Danke,
Chris
Linuxer
 2009-01-15 18:27
#118036 #118036
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Skript in utf8-Kodierung gespeichert, aber kein utf8 Pragma geladen?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
murphy
 2009-01-16 06:07
#118054 #118054
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Funktionieren Zeichenklassen in regulaeren Ausdruecken ueberhaupt mit Multibytesequenzen? Ich dachte, da gaebe es irgendwelche Caveats...
When C++ is your hammer, every problem looks like your thumb.
moritz
 2009-01-16 09:35
#118055 #118055
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
murphy+2009-01-16 05:07:48--
Funktionieren Zeichenklassen in regulaeren Ausdruecken ueberhaupt mit Multibytesequenzen? Ich dachte, da gaebe es irgendwelche Caveats...


Also wenn man den String schön brav dekodiert, dann ist "ä" keine Multibytesequenz mehr, sondern einfach nur ein Zeichen mit Codepoint > 127, und damit funktionieren Regexes wunderbar.

Und wie immer siehe auch hier: [http://perlgeek.de/de/artikel/charsets-unicode]
chris-
 2009-02-02 16:33
#118584 #118584
User since
2007-10-18
18 Artikel
BenutzerIn
[default_avatar]
ok. habe Link von moritz gelesen. Bin noch nicht schlau geworden

Mein System ist utf-8 basiert, die Dateien liegen im utf-8-Format auf der Festplatte.
Ich lese Dateien ein und zeige sie via cgi-bin an.
Lese ich von einem form gibt es Müll.

Allggemein: Die Steite im Browser hat natürlich
Code: (dl )
<meta http-equiv="content-type" content="text/html;charset=utf-8" />


Versuch1:
zu Beginn des Programms
Code: (dl )
use open ':encoding(UTF-8)';


Ergebnis:
Datei wird im Browser richtig angezeigt.
Gebe im Formular 'Ä' ein -> es für Datei zu ISO-8859 umgewandelt, obwohl ich im form accecpt-charset="utf-8" angegeben habe.

Versuch2:
Wie Versuch1, zusätzlich der Text aus der form mit
Code: (dl )
decode ('utf-8', $query->param('domains'));

umgewandelt.
Ergebnis:
Datei von HD wird im Browser richtig angezeigt.
Ä -> &#65533;
Also, das kann es nicht gewesen sein.

Versuch3:
Wie Versuch1, zusätzlich der Text aus der form mit
Code: (dl )
decode ('latin1', $query->param('domains'));

umgewandelt.
Ergegbnis:
Datei -> Browser: korrekt
Ä -> in Datei: Ä: korrekt

So wie es aussieht liefert der Browser latin1, aber warum?? Im Form ist utf-8 eingestellt, der Browser (Ansicht -> Zeichenkodierung) ebenfalls.

Nun, wenn mir das nun einer erklären könnte...


Edit: Anmerkung: Verwende CGI::Application.
Struppi
 2009-02-02 16:41
#118585 #118585
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
chris-+2009-02-02 15:33:39--
Mein System ist utf-8 basiert, die Dateien liegen im utf-8-Format auf der Festplatte.

Auch die Perldateien?
chris-
 2009-02-02 16:48
#118586 #118586
User since
2007-10-18
18 Artikel
BenutzerIn
[default_avatar]
Ja:
GW.pm: UTF-8 Unicode text, with CR, LF line terminators
Struppi
 2009-02-02 16:59
#118588 #118588
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Also ich kann das nicht nachvollziehen, wenn die Seite in utf-8 ausgegeben wird und das Perlskript in utf-8 gespeichert ist (und sonst nichts), läuft das bei mir perfekt.
chris-
 2009-02-02 17:18
#118589 #118589
User since
2007-10-18
18 Artikel
BenutzerIn
[default_avatar]
Ich habe mir nun auch ein kleines cgi-script schnell gebastelt, es funktioniert alles ebenso perfekt.

Nehme ich hingegen die umfangreiche Anwendung mit CGI::Application, hakt es.
Also, es liegt entweder an meinem Code (irgendwo ein decode/encode, wo es nicht hingehört) oder CGI::Application macht die Probleme.

Hat wer von euch hinsichtlich Umlaute und CGI::Application Erfahrungen?
renee
 2009-02-02 17:23
#118590 #118590
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Versuch doch mal eine möglichst einfach CGI::Application-Anwendung zu basteln... Einfach nur ein Runmode, der die Parameter ausgibt.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 10 Einträge, 1 Seite



View all threads created 2009-01-15 18:25.