Sonderzeichen nicht richtig dargestellt - schon alles probiert!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sonderzeichen nicht richtig dargestellt - schon alles probiert!

    Guten Tag,

    viele werden beim Lesen dieses Posts wahrscheinlich denken: Bitte nicht schon wieder!

    Ich habe eine Web-Anwendung in PHP programmiert, die Daten aus einer MySQL-Datenbank holt und auch wieder reinschreibt. Leider gibt es da Probleme mit sämtlichen Sonderbuchstaben.

    Gebe ich versuchsweise über eines meiner HTML-Formulare z. B. "ßßß" ein, finde ich beim Aufrufen der Datenbank über phpMyAdmin im entsprechenden Feld den Ausdruck "ßßß" wieder. Der gleiche Ausdruck steht dann auch in den PDF-Dateien, die ich aus der Web-Anwendung heraus erzeuge.
    Die Ausgabe als HTML innerhalb der Anwendung funktioniert dann allerdings wieder. Da wird als "ßßß" angezeigt, wie ursprünglich eingegeben.
    Nach der Lekture diverser Threads zu diesem Thema habe ich schon Folgendes umgesetzt:

    1) Ein besonderes PHP-Skript, das den einleitenden HTML-Code für alle meine Seiten enthält und das ich über die PHP-Skripte einbinde, beginnt wie folgt:

    Code:
    <?php header( 'content-type: text/html; charset=utf-8' );
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
    echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">';
    echo '<head>';
    echo '<link rel="stylesheet" type="text/css" href="versandkontrolle.css"></link>';
    echo '<style type="text/css"></style>';
    echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
    echo '</head>';
    2) Meine CSS beginnt mit
    Code:
    @charset "utf-8";
    3) Meine .htaccess-Datei, die in meinem Hauptverzeichnis liegt, also demVerzeichnis, wo auch meine index.php ist, sieht wie folgt aus:

    Code:
    order deny,allow
    deny from all
    AddCharset utf-8 .css .htm .html .js
    php_value default_charset utf-8
    4) Nach dem Verbindungsaufbau mit der Datenbank lege ich utf8 als Zeichensatz fest:

    Code:
    if (mysqli_connect_errno()) {
    die('Verbindungsaufbau Fehlgeschlagen: ' . mysqli_connect_error() . '(' . mysqli_connect_errno() . ')');
    }
    mysql_query("SET NAMES 'utf8'");
    5) Alle meine HTML-Formulare beginnen mit:

    Code:
    <form action="'.$form_action.'" method="post" accept-charset="utf-8">
    6) Alle meine Tabellen und varchar-Tabellenspalten haben als Kollation utf8_general_ci.

    7) BOMs habe ich schon alle ausgeflöht, weil die PDF-Generierung sonst gar nicht funktionieren würde.

    Was mache ich falsch? Habe ich diese Sachen alle an die falsche Stelle programmiert, so dass sie irgendwie nicht berücksichtigt werden?

    Manche Skripte rufe ich mit sowas auf wie

    Code:
    header('Location: /adresseingabe.php?meldung=iok');
    und binde anschließend die besagte Datei für einleitenden Code ein, die ja wieder den header()-Befehl für UTF8 enthält. Wird der zweite header aus der inkludierten Datei dadurch irgendwie ignoriert oder so?

    PHPMyAdmin sagt, dass meine Datenbank als Ganzes die Kollation utf8_unicode_ci hat, muss ich das vielleicht auch noch auf utf8_gneral_ci ändern? Und wenn ja, wie?

    Ich würde mich sehr über Lösungsvorschläge von Euch freuen.

    Vielen Dank

  • #2
    berichtige erstmal deine Fehler ...

    mysql[COLOR=Red]i[/COLOR]_connect_errno() <-> mysql_query ???

    schicke anstelle von set names bitte eine Abfrage mit

    Code:
    SET CHARACTER SET 'utf8'
    [font=Verdana]
    Wer LESEN kann, ist klar im Vorteil!
    [/font]

    Kommentar


    • #3
      Außerdem gibt es hier ein Tutorial zu dem Thema.

      Peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Zitat von eagle275 Beitrag anzeigen
        Code:
        SET CHARACTER SET 'utf8'
        Bitte die Anführungszeichen beachten! Es heißt
        Code:
        SET CHARACTER SET utf8;
        aber
        Code:
        SET NAMES 'utf8';
        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Oder man verwendet einfach:

          PHP: mysqli::set_charset - Manual

          Kommentar


          • #6
            Danke schon mal!

            Hallo,

            vielen Dank für Eure Ratschläge, und Entschuldigung, dass ich jetzt erst reagiere.

            Da ich seit letzten Freitag mit der Erkältung im Bett liege und meine Web-Anwendung von zu Hause aus nicht aufrufen kann, kann ich die Vorschläge erst nächste Woche ausprobieren.

            Ich gebe dann sofort Rückmeldung.

            Nochmals vielen Dank

            Kommentar

            Lädt...
            X