Ergebnis 1 bis 8 von 8

Thema: Umlautfehler beim Einbuchen von Paidmails in die Datenbank

  1. #1

    Umlautfehler beim Einbuchen von Paidmails in die Datenbank

    Hallo,

    ich habe ein kleine Problem mit den Interfaces von STG oder mit meiner Datenbank, das wei ich nicht genau

    Wenn ich den Paidmail Cron laufen lasse bucht er die Paidmails nur falsch in die Datenbank ein (Tabelle vms_gebuchte_werbung).
    Da steht im Beschreibungstext dann so 'n Schinken: für, müsst usw.

    Wenn ich die Datenstze aus der Datenbank lsche, zeigt er mir beim lschen auch an: bla bla bla USING utf8

    Ich verwende aber kein utf sondern den iso Zeichensatz bei den Dateien und latin1_swedish_ci als Kollation in der MySQL Datenbank. Sollten also beide mit den Umlauten klar kommen oder nicht?

    Wieso werden die Datenstze dann nicht richtig abgespeichert?

    Hoffe ihr knnt mir helfen. Die Forensuche spuckt nicht wirklich was zu meinem Problem aus.

    Gru,
    MrChicken

  2. #2
    Erfahrener Benutzer Avatar von dude32
    Registriert seit
    27.07.2006
    Beitrge
    1.771
    wie sieht denn die ausgabe aus???
    genau so ein kauderwelsch???
    www.scripte-box.de VMS,VMS2 und FWX

  3. #3
    Ja, das wird auch auf der Webseite so angezeigt.

    Es muss wohl am Interface liegen. Wenn ich ber das Adminmen eine Paidmail einbuche mit ,, werden die korrekt in die DB geschrieben und auch korrekt angezeigt.

    Dann versteh ich aber nicht wieso das Interface den Mailtext "bearbeitet"/falsch speichert...

  4. #4
    Erfahrener Benutzer Avatar von dude32
    Registriert seit
    27.07.2006
    Beitrge
    1.771
    schcik mir mal bitte den link zu deiner seite
    www.scripte-box.de VMS,VMS2 und FWX

  5. #5
    Hast ne PN (und ich hab sie mal in meine Signatur geschrieben).
    Meine Seite: www.klicklos.de

  6. #6
    Erfahrener Benutzer Avatar von dude32
    Registriert seit
    27.07.2006
    Beitrge
    1.771
    vieleicht hilft dir das hier weiter:

    MySQL PHP Umlaute/Sonderzeichen fixen UTF-8/ISO

    vom 2011/11/18
    Jeder kennt das Problem, aus irgendeinem Grund wurden Wrter in der falschen Kodierung in die Datenbank geschrieben. Wenn das passiert ist, kann man daran erkennen, dass sich Zeichen wie diese untergemischt haben:
    '¦, '¨, '?, '´, '¸, 'À, 'Á, 'Â, 'Ã, 'Ä, 'Å, 'Æ, 'Ç, 'È, 'É, 'Ê, 'Ë, 'Ì, 'Í, 'Î, 'Ï, 'Ñ, 'Ò, 'Ó, 'Ô, 'Õ, 'Ö, 'Ø, 'Ù, 'Ú, 'Û, 'Ü, 'Ý, 'Þ, 'ß, ' , 'á, 'â, 'ã, 'ä, 'å, 'æ, 'ç, 'è, 'é, 'ê, 'ë, 'ì, '*, 'î, 'ï, 'ð, 'ñ, 'ò, 'ó, 'ô, 'õ, 'ö, 'ø, 'ù, 'ú, 'û, 'ý, 'þ, 'ÿ Das Problem ist, dass diese Zeichen nicht utf8 kodiert worden sind, aber in utf8 abgespeichert worden sind, weil die DB Spalte so definiert worden ist (Kolation: utf8_general z.B.
    Um dies zu vermeiden, sollte also vorher die Funktion
    $string = utf8_encode($string); angewendet werden.
    Die Codierung von Strings kann berprft werden mit der Funktion mb_detect_encoding (vielen Dank an FranKee).
    echo mb_detect_encoding($string); Eine einfache rekusive Funktion um ein mehrdimensionales Array nach UTF-8 zu kodieren ist (performanter wre noch mit Refernzen zu arbeiten):
    function utf8encodeArray($array) { foreach($array as $key => $value) { if(is_array($value)) { $array[$key] = utf8encodeArray($value); } elseif(!mb_detect_encoding($value, 'UTF-8', true)) { $array[$key] = utf8_encode($value); } } } Eine weitere Fehlerquelle, ist die bertragung der Daten zur Datenbank, diese sollte immer beim ffnen der Datenbankverbindung auf UTF-8 gesetzt werden:
    mysql_query("SET NAMES 'utf8'");
    Wenn es bereits zu spt ist und die Daten in der DB gespeichert worden sind, kann man die falschen Umlaute wie folgt ersetzen:
    private function getUmlauteArray()
    {
    return array(
    'ü'=>'',
    'ä'=>'',
    'ö'=>'',
    'Ö'=>'',
    'ß'=>'',
    ' '=>'',
    'á'=>'',
    'â'=>'',
    'ã'=>'',
    'ù'=>'',
    'ú'=>'',
    'û'=>'',
    'Ù'=>'',
    'Ú'=>'',
    'Û'=>'',
    'Ü'=>'',
    'ò'=>'',
    'ó'=>'',
    'ô'=>'',
    'è'=>'',
    'é'=>'',
    'ê'=>'',
    'ë'=>'',
    'À'=>'',
    'Á'=>'',
    'Â'=>'',
    'Ã'=>'',
    'Ä'=>'',
    'Å'=>'',
    'Ç'=>'',
    'È'=>'',
    'É'=>'',
    'Ê'=>'',
    'Ë'=>'',
    'Ì'=>'',
    'Í'=>'',
    'Î'=>'',
    'Ï'=>'',
    'Ñ'=>'',
    'Ò'=>'',
    'Ó'=>'',
    'Ô'=>'',
    'Õ'=>'',
    'Ø'=>'',
    'å'=>'',
    'æ'=>'',
    'ç'=>'',
    'ì'=>'',
    '*'=>'',
    'î'=>'',
    'ï'=>'',
    'ð'=>'',
    'ñ'=>'',
    'õ'=>'',
    'ø'=>'',
    'ý'=>'',
    'ÿ'=>'',
    '€'=>''
    );
    und mit der Funktion ersetzen:
    public function fixeUmlauteDb()
    {
    $umlaute = $this->getUmlauteArray();
    foreach ($umlaute as $key => $value)
    {
    $sql = "UPDATE table SET tracks = REPLACE(row, '{$key}', '{$value}') WHERE row LIKE '%{$key}%'";
    }
    }
    Achtung: Das Script funktioniert nur, wen die Codierung der PHP Datei UTF-8 ist (kann z.B. mit Notepad++ gecheckt/verndert werden: Hauptmen->Kodierung->UTF-8 ). ISO codierte Dateien funktionieren leider nicht, weil 30% der Umlaute als ? dargestellt werden. Das Script funktioniert also nur mit einer UTF8 codierten Projekt.
    Quelle: http://www.sebastianviereck.de/mysql...chen-utf8-iso/
    www.scripte-box.de VMS,VMS2 und FWX

  7. #7
    Hilft noch nicht ganz: Muss ich dann nicht die Codierung der Seite und die Kollation der MySQL Spalte berall ndern?


    Und noch etwas was ich nicht ganz verstehe:
    Beispiel:
    Bei der IF Abfrage von Hand:
    Code:
    Die GNSTIGSTE ALL NET FLAT auf dem Markt. Nur 19,90  + Smart-Phone GRATIS!|Die GNSTIGSTE ALL ....
    Fr Beschreibung|Mailtext werden Umlaute vom Sponsor also richtig gezeigt.

    In die DB wird geschrieben:
    Beschreibung:
    Code:
    Die GÜNSTIGSTE
    Wird also durch die Seitencodierung richtig umgeschrieben =

    Mailtext:
    Code:
    Die G??NSTIGSTE ALL NET FL
    Wird natrlich nicht erkannt.

    Also warum wird der Mailtext nicht richtig geschrieben? Kann es sein, weil das TYP longtext in der DB ist?
    Meine Seite: www.klicklos.de

  8. #8
    Moderator
    Registriert seit
    07.07.2006
    Beitrge
    1.370
    Ja, du musst deine Seite dann erst komplett auf UTF-8 Codieren, damit dannn die Ausgabe auch wieder stimmt.

    Ist einiges an Arbeit aber somit bist du zukunftssicher.


    Ich mache das mit dem PsPad, hatte mir JP empfohlen und geht recht einfach damit.

    MfG

hnliche Themen

  1. Banner einbuchen
    Von Ghost-IT im Forum Support zu Addons & Erweiterungen
    Antworten: 13
    Letzter Beitrag: 01.02.2015, 14:31
  2. Paidmails gelangen nicht in die Datenbank
    Von Luck-Boy74 im Forum Support zu Addons & Erweiterungen
    Antworten: 3
    Letzter Beitrag: 20.12.2012, 23:29
  3. Paidmails Einbuchen
    Von christopher93 im Forum Support zum VMSone
    Antworten: 7
    Letzter Beitrag: 17.08.2009, 09:43
  4. Cron fehler beim einbuchen von mails
    Von papahp im Forum Support zum VMSone
    Antworten: 3
    Letzter Beitrag: 29.04.2009, 11:53
  5. Paidmail einbuchen Stg
    Von napfkuchen im Forum Support zum VMSone
    Antworten: 11
    Letzter Beitrag: 23.01.2009, 00:51

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhnge hochladen: Nein
  • Beitrge bearbeiten: Nein
  •