Schrift
[thread]11097[/thread]

htmlspecialchars & Umlaute in Dtanebank speichern



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
jonyder123
 2008-01-04 13:15
#104380 #104380
User since
2007-12-17
3 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich sitze derzeit an dem Problem, das ich nicht recht weiß, wie ich einen String unter beachtung der Umlaute (ä ü ö usw.) in der Datenbank speichern soll. In PHP gibt es dafür htmlspecialchars() aber wie mache ich das bei Perl?

Bin für jeden Tipp dankbar...
Froschpopo
 2008-01-04 13:20
#104382 #104382
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich würde niemals HTML-Code in einer Datenbank speichern. Dann kümmer dich lieber daraum, dass das charset eingehalten wird und zwar in der Datenbank, als wie auch im Dokument.
Du versaust dir mit sowas die ganze Datenbank; weil man weiss nie, was noch für Standards kommen. Wer weiss; vielleicht willst du eines Tages etwas anderes als HTML einsetzen, und dann sitzt du da auf deinen Umlauten.
Deshalb: Lass den Code durch einen parser laufen, und zwar beim output ans Dokument!
Denk auch immer daran, dass du, wenn du Umlaute in der Datenbanke hast, du diese später auch bei Vergleichen übersetzen willst:

WHERE umlaut = ü

... geht dann nämlich nicht mehr.
jonyder123
 2008-01-04 13:22
#104383 #104383
User since
2007-12-17
3 Artikel
BenutzerIn
[default_avatar]
Also wenn ich dich richtig verstehe, meinst du ich soll einfach ä, ü usw. in der Datenbank speicher wie es ist... also das in der Datenbank nachher auch ä ü usw. steht? Und dann soll ich diesen Datenbankeintrag parsen und ausgeben?
Froschpopo
 2008-01-04 13:26
#104384 #104384
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
genau :)
Du musst ja auch mal daran denken, dass du die Datenbank vielleicht später mal mit einem GUi-Client abrufen willst der kein HTML versteht. Vielleicht gibt es ja auch mal eine andere Sprache außer HTML, die du lieber verwenden willst.
Um einen parser kommste sowieso nicht drum herum.
Stell dir mal vor, in deiner Datenbank stehen Passwörter.
Du willst nun prüfen, wer das Passwort "bäume" hat.

SELECT username FROM users WHERE passwd = 'bäume'

das hätte dann kein match zur Folge, weil du erst das Passwort in html übersetzen müsstest.
Das ist also ziemlicher quatsch, HTML in eine Datenbank zu schreiben.
Ich z.B. verzichte vollständig auf einen Parser. Ich verwende denselben Header wie Charset in der Datenbank. Dann kann man sich das nämlich auch sparen.
Du musst nur darauf achten, dass dein HTML-header derselbe ist wie dein Charset in der Datenbank.
Froschpopo
 2008-01-04 13:28
#104386 #104386
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich hab grad übrigens nochmal nach htmlspecialchars() recherchiert.
Laut google übersetzt das Ding keine Umlaute, sondern quotet eher &, > < usw.
Umlaute wie äüö sind evtl. garnicht eingeschlossen.
jonyder123
 2008-01-04 13:30
#104387 #104387
User since
2007-12-17
3 Artikel
BenutzerIn
[default_avatar]
Danke dir für deine schnelle und präzise Antwort... Hat mir sehr weitergeholfen... und ich muss feststellen du hast recht... Ich werde das so machen wie du gesagt hast! Danke!
Struppi
 2008-01-04 13:30
#104388 #104388
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Auch die HTML Ausgabe muss nicht umgewandelt werden. Verwende einen Zeichensatz der Umlaute kann, dann müssen diese auch nicht umgewandelt werden, dass einzige Zeichen dass dann noch umgewandelt werden muss ist '<'
renee
 2008-01-04 13:46
#104391 #104391
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zum Umwandeln einfach CPAN:HTML::Entities verwenden...
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/
Froschpopo
 2008-01-04 13:51
#104392 #104392
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
da ich meistens sowieso mit CGI.pm arbeite, nehme ich meistens escapeHTML. Warum doppelt gemoppelt?
Hier ein Auszug aus escapeHTML:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sub escapeHTML {
         # hack to work around  earlier hacks
         push @_,$_[0] if @_==1 && $_[0] eq 'CGI';
         my ($self,$toencode,$newlinestoo) = CGI::self_or_default(@_);
         return undef unless defined($toencode);
         return $toencode if ref($self) && !$self->{'escape'};
         $toencode =~ s{&}{&amp;}gso;
         $toencode =~ s{<}{&lt;}gso;
         $toencode =~ s{>}{&gt;}gso;
         if ($DTD_PUBLIC_IDENTIFIER =~ /[^X]HTML 3\.2/i) {
             # $quot; was accidentally omitted from the HTML 3.2 DTD -- see
             # <http://validator.w3.org/docs/errors.html#bad-entity> /
             # <http://lists.w3.org/Archives/Public/www-html/1997Mar/0003.html>.
             $toencode =~ s{"}{&#34;}gso;
         }
         else {
             $toencode =~ s{"}{&quot;}gso;
         }
         my $latin = uc $self->{'.charset'} eq 'ISO-8859-1' ||
                     uc $self->{'.charset'} eq 'WINDOWS-1252';
         if ($latin) {  # bug in some browsers
                $toencode =~ s{'}{&#39;}gso;
                $toencode =~ s{\x8b}{&#8249;}gso;
                $toencode =~ s{\x9b}{&#8250;}gso;
                if (defined $newlinestoo && $newlinestoo) {
                     $toencode =~ s{\012}{&#10;}gso;
                     $toencode =~ s{\015}{&#13;}gso;
                }
         }
         return $toencode;
}


ist also auch nix weltbewegendes, aber genügen tuts trotzdem voll und ganz.
renee
 2008-01-04 14:26
#104393 #104393
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Froschpopo+2008-01-04 12:51:52--
da ich meistens sowieso mit CGI.pm arbeite, nehme ich meistens escapeHTML. Warum doppelt gemoppelt?
[...]


TIMTOWTDI

In den früheren Posts steht nix von CGI.pm und ich arbeite häufig nicht direkt mit CGI.pm und da ist es manchmal praktischer nicht mit CGI.pm zu arbeiten.
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/
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2008-01-04 13:15.