tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
17
ZUGRIFFE
533
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von VanHellsehn
    VanHellsehn VanHellsehn ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    299
    Hi,

    Ich habe meine DB und Seite auf UTF-8 gebracht.
    Und habe folgenden Code:
    PHP-Code:
    $db = new MySqli("localhost""root""""xyz");
    $db->set_charset("utf8");
    $this->con $db;
            
    $name  $this->con->real_escape_string($_POST['name']);
            
    $email $this->con->real_escape_string($_POST['email']);
            
    $text  $this->con->real_escape_string($_POST['text']);
            
    $homepage = ($_POST['homepage']!=NULL)? $this->con->real_escape_string($_POST['homepage']) : NULL;
            
            if(
    $homepage != NULL)
                
    $sql "INSERT INTO `comments` 
                               (name, email, homepage, text, ip, timestamp, keyword)
                        VALUES ('"
    .$name."', '".$email."', '".$homepage."', '".$text."',
                                '"
    .$_SERVER['REMOTE_ADDR']."', '".time()."', '".$this->keyword."')"
    Er über nimmt die Daten aus folgenden Formular:
    HTML-Code:
    <form action="http://<?php echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>#com" method="post" id="comForm" accept-charset="utf-8">
    <p><label for="name">Name: <span>*</span></label>
    <input type="text" name="name" id="name" value="" /></p>
    .
    .
    .
    </form>
    Und bei der MySql-Tablle sind alle Felder auf Kollation utf8_general_ci gestellt.
    Nun kommt aber sowas (ääüüüpü) dabei heraus wenn ich ä´s etc rein schreiben möchte.

    Jetzt meine frage was muss ich noch tuen?!
    Geändert von VanHellsehn (17.03.10 um 16:30 Uhr)
     
    =)

  2. #2
    Avatar von Marschal
    Marschal Marschal ist offline Großer Enumerator
    Registriert seit
    May 2008
    Ort
    Lohfelden (bei Kassel)
    Beiträge
    363
    Hi,

    ich würde dir empfehlen Unicode als Charset für deine Seite zu verwenden (was ja eh standart ist, bzw standartisiert wird).
    Danach sollte das eigentlich funktionieren mit den Zeichen.
    Ansonsten empfehle ich dir alle Umlaute umzuschreiben. Dh. für ein ä &auml;.
    Für ein Ä &Auml;
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    [B]HTML für folgende Umlaute:[/B]
    [COLOR="Blue"]ä[/COLOR] - &auml;
    [COLOR="Blue"]Ä[/COLOR] - &Auml;
    [COLOR="Blue"]ö[/COLOR] - &ouml;
    [COLOR="Blue"]Ö[/COLOR] - &Ouml;
    [COLOR="Blue"]ü[/COLOR] - &uuml;
    [COLOR="Blue"]Ü[/COLOR] - &Uuml;
    [COLOR="Blue"]ß[/COLOR] - &szlig;

    HTML-Code:
    <meta http-equiv="content-type" content="text/html"; charset="ISO-8859-1" />
    MfG

    EDIT: wenn du noch was zum thema nachlesen möchtest, KLICK
    Anere Stichwörter bei Google sind UTF-8, Unicode, ISO-8859-1, charset, html, umlaute...
    Geändert von Marschal (17.03.10 um 16:48 Uhr)
     


    " Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
    Ambrose Bierce

  3. #3
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    Weitere Zeichensätze die neben den reinen Datenbankfelder intressieren ist der Charset der Website. Denn im gleichen sendet der Browser die Inputfelder.

    Eine Globale Lösung wie man es für alle Datenbank befehle zurecht schieben könnte währe den Zeichensatz der datenbank verbindung zu ändern hier z.B. auf utf8
    PHP-Code:
    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'"); 
    Die HTML entities in die Datenbank zu schreiben ist nicht zu empfehlen da man sich hier Datenbankfunktionen zum vergleichen und suchen verbaut.
     
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

  4. #4
    Avatar von VanHellsehn
    VanHellsehn VanHellsehn ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    299
    Zitat Zitat von Marschal Beitrag anzeigen
    ich würde dir empfehlen Unicode als Charset für deine Seite zu verwenden (was ja eh standart ist, bzw standartisiert wird).
    HTML-Code:
    <meta http-equiv="content-type" content="text/html"; charset="ISO-8859-1" />
    Das passt nicht ganz zusammen xD
    Aber naja ich habe schon Unicode für meine Seite als Zeichensatz.
    HTML-Code:
    <?xml version="1.0" encoding="utf-8"?>
    <html>
     <head>
      <meta http-equiv="content-type" content="text/html;charset=utf-8" />
     </head>...
    All das habe ich schon da es ganz klar ist..

    Edit:
    Zitat Zitat von Michael Engel Beitrag anzeigen
    Weitere Zeichensätze die neben den reinen Datenbankfelder intressieren ist der Charset der Website. Denn im gleichen sendet der Browser die Inputfelder.

    Eine Globale Lösung wie man es für alle Datenbank befehle zurecht schieben könnte währe den Zeichensatz der datenbank verbindung zu ändern hier z.B. auf utf8
    PHP-Code:
    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'"); 
    .
    Damit klappt es auch nicht..

    Zitat Zitat von Michael Engel Beitrag anzeigen
    Die HTML entities in die Datenbank zu schreiben ist nicht zu empfehlen da man sich hier Datenbankfunktionen zum vergleichen und suchen verbaut.
    Würde ich niemals machen.. ist fast so wie wenn man in einem Forum die BB-Codes erst ersetzt und dann den Artikel speichert.. es bringt nichts
    Geändert von VanHellsehn (17.03.10 um 16:52 Uhr)
     
    =)

  5. #5
    Avatar von Marschal
    Marschal Marschal ist offline Großer Enumerator
    Registriert seit
    May 2008
    Ort
    Lohfelden (bei Kassel)
    Beiträge
    363
    wirklichO.o habe ich da jetzt was verwechselt

    gut, vllt sollte ich nochmal etwas mehr lesen
     


    " Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
    Ambrose Bierce

  6. #6
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    Was mir gerade noch bei deinem Quelltextschnipsel aufgefallen ist: du verwendest XHTML (erkennbar an der XML-Deklaration in der ersten Zeile), aber den MIME-Typ für normales HTML text/html. Aus Ordnungsgründen verwende lieber den MIME-Typ für XHTML: application/xhtml+xml
    saftmeister bedankt sich. 
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  7. #7
    Avatar von VanHellsehn
    VanHellsehn VanHellsehn ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    299
    application/xhtml+xml ?
    Du meinst das Imkopf dann stehen würde:
    HTML-Code:
    <?xml version="1.0" encoding="utf-8"?>
    <html>
     <head>
      <meta http-equiv="content-type" content="application/xhtml+xml;charset=utf-8" />
     </head>...
    Oder was?
    http://www.w3.org/TR/xhtml-media-types/
    Geändert von VanHellsehn (17.03.10 um 17:07 Uhr)
     
    =)

  8. #8
    Avatar von VanHellsehn
    VanHellsehn VanHellsehn ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    299
    Einige verwirrte Leute sind offenbar der Überzeugung, mit

    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

    in einem text/html-Dokument den XML-Parser des Benutzeragenten aktivieren zu können. Das ist natürlich Unsinn. Ein Benutzeragent müßte mit seinem Tagsoup-Parser beginnen und ab dem meta-Element mit seinem XML-Parser weitermachen oder gar noch einmal von vorne beginnen.

    Tatsächlich ist application/xhtml+xml an dieser Stelle nicht nur wirkungslos, sondern sogar schädlich. Mindestens Lynx nämlich kann aus

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

    die Deklaration der Codierung ermitteln, aus

    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" />

    aber nicht. Es spricht nichts dagegen, auch in einem XHTML-Dokument die Zeichencodierung bspw. mit

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

    anzugeben. Das kann sogar notwendig sein, wenn Sie die Zeichencodierung ansonsten nur in der XML-Deklaration angegeben und nicht in einem „echten“ HTTP-Header wie Content-Type: text/html; charset=iso-8859-1, denn HTML-Benutzeragenten verarbeiten die XML-Deklaration nicht.

    Mit application/xhtml+xml im richtigen Content-Type-Header ist das meta-Element hingegen völlig irrelevant.
    Quelle: http://schneegans.de/web/xhtml/

    Also ich denke ich lasse das
    Geändert von VanHellsehn (17.03.10 um 17:31 Uhr)
     
    =)

  9. #9
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    Mag sein, dass das einige Browser falsch interpretieren, richtig ist es dennoch.
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  10. #10
    Avatar von VanHellsehn
    VanHellsehn VanHellsehn ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    299
    Warum soll ich das den machen wenn text/html; reicht?
     
    =)

  11. #11
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.123
    Zitat Zitat von VanHellsehn Beitrag anzeigen
    ... Nun kommt aber sowas (ääüüüpü) dabei heraus wenn ich ä´s etc rein schreiben möchte...
    Hallo,

    vermutlich wird dein HTML-Dokument nicht von Server im UTF-8-Zeichencode ausgeliefert.
    Gibt die Seitenadresse doch mal im Web-Sniffer ein und sieh dir mal an, ob im HTTP-Header evtl. etwas ähnliches wie hier drinsteht:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Status: HTTP/1.1 200 OK
    Date:    Wed, 10 Mar 2010 10:48:20 GMT    
    Server:    Apache/2.2.9 (Debian) PHP/5.3.1 with Suhosin-Patch    
    X-Powered-By:    PHP/5.3.1    
    Vary:    Accept-Encoding    
    Content-Encoding:    gzip    
    Content-Length:    458    
    Connection:    close    
    Content-Type:    text/html; [COLOR=Blue]charset=ISO-8859-1[/COLOR]
    Der Browser richtet sich in erster Linie nach dem Eintrag im Content-Type-Feld des HTTP-Headers. Nur wenn er dort nichts findet (weil es das beispielsweise überhaupt nicht gibt, wenn man das Dokument lokal von der Festplatte geladen hat), dann verwendet er die Content-Type-Deklaration im Meta-Tag des HTML-Headers.

    In der Artikelserie "PHP und UTF-8, eine Anleitung" (insbesondere im zweiten Teil: "Webseiten als UTF-8 ausliefern") wird beschrieben, wie man den Server veranlasst das Dokument im gewünschten Zeichencode auszuliefern.
     

  12. #12
    Avatar von VanHellsehn
    VanHellsehn VanHellsehn ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    299
    Hi,
    Gegooglet habe ich auch schon.. nur ich habe den header, per PHP via. header();, per htaccess via AddCharset und per Html gesendet. Also was soll ich noch tuen?!
     
    =)

  13. #13
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.123
    ... ja genau. Und was steht denn nun im HTTP-Header?
     

  14. #14
    Avatar von VanHellsehn
    VanHellsehn VanHellsehn ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    299
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Status: HTTP/1.1 200 OK
    Date:   Wed, 17 Mar 2010 19:54:03 GMT   
    Server: Apache/2.2.15   
    X-Powered-By:   PHP/5.2.13  
    Set-Cookie: PHPSESSID=d00647616ed112ada4b70399893e57dc; path=/  
    Expires:    Thu, 19 Nov 1981 08:52:00 GMT   
    Cache-Control:  no-store, no-cache, must-revalidate, post-check=0, pre-check=0  
    Pragma: no-cache    
    Connection: close   
    Transfer-Encoding:  chunked 
    Content-Type:   text/html; charset=utf-8
    Geändert von VanHellsehn (17.03.10 um 20:52 Uhr)
     
    =)

  15. #15
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.123
    ... und in der Tabelle darunter?

    EDIT:
    Verzeihung - war der richtige Eintrag.
    Schade, dann war meine Vermutung doch nicht richtig.
    Geändert von hela (17.03.10 um 20:56 Uhr)
     

Ähnliche Themen

  1. Antworten: 19
    Letzter Beitrag: 09.04.08, 14:58
  2. Daten werden nicht gespeichert
    Von bodoschmidt im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 22.01.08, 00:13
  3. Antworten: 5
    Letzter Beitrag: 31.08.07, 11:43
  4. Antworten: 6
    Letzter Beitrag: 06.02.05, 20:39
  5. Daten werden nicht gespeichert...
    Von chpa im Forum PHP
    Antworten: 11
    Letzter Beitrag: 04.08.04, 19:49