+ Antworten
Ergebnis 1 bis 8 von 8

Thema: Umlaute per Insert in MySQL

  1. #1
    Neu an Board
    Registriert seit
    27.07.2006
    Beiträge
    74
    Bedankte sich
    2
    1 Danksagung in 1 Beitrag

    Standard Umlaute per Insert in MySQL

    Hallo,

    in einer Komponente möchte ich Texte mit Umlauten in meine MySQL 5 DB schreiben. Dies klappt in phpMyAdmin problemlos, im Code allerdings nicht, da werden die Worte an der Stelle des Umlauts abgeschnitten.

    Verbindung wird über $db =& JFactory::getDBO();
    $db->setQuery("INSERT INTO test (name) VALUES ('HÖÜÄÄÖÖÖLÖ'));
    $db->query();

    Das Charset der Tabelle test ist utf8_general_ci, wie gesagt in phpMyAdmin kann ich auch Umlaute eintragen.

    Weißt jemand rat?
    Danke und Gruß, Rudolf

  2. #2
    Kommt häufiger vorbei Avatar von holly7
    Registriert seit
    13.03.2009
    Ort
    Bietigheim-Bissingen
    Beiträge
    296
    Bedankte sich
    0
    Erhielt 56 Danksagungen
    in 53 Beiträgen

    Standard

    Entweder du wandelst die Umlaute vorher in (html)zeichen um oder bei der Ausgabe.

  3. #3
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    speicher deine werte mit ner jtable instanz oder dergleichen.

  4. #4
    Neu an Board
    Registriert seit
    27.07.2006
    Beiträge
    74
    Bedankte sich
    2
    1 Danksagung in 1 Beitrag

    Standard

    Danke für die Antworten. HTML Entities sind keine Optionen, weil diese dann genauso in der Datenbank stehen würden, was für direkte SQL Auswertungen unschön ist.

    Was macht denn eine JTable Instanz anders beim Speichern der Daten, genau das müsste ich doch auch direkt tun können?

  5. #5
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    unabhaengig von deinem anliegen war der hinweis jtable ... oder aehnliche hilfsmittel zu nutzen eher allgemein gedacht. warum weniger framework hilfen nutzen als moeglich.

    gibt doch mal bitte ein konkretes beispiel was du wie, wo und wann in welche tabelle / spalte speichern moechtest. wenn ich aehnlich dem oberen beispiel von dir vorgehe:

    PHP-Code:
    $id 0;
    $varchar 'Möchten Sie einen Kaffee trinken?';
    $text 'Text mit hübschem Umlaut.';

    $db JFactory::getDBO();
    // id, varchar, text
    $query 'INSERT INTO #__test '
           
    ' VALUES ( '. (int) $id.', '.$db->Quote$varchar ).', '.$db->Quote$text ).' )';

    $db->setQuery$query );


    if (!
    $db->query())
    {
        
    JError::raiseError500$db->stderr() );
        return 
    false;

    funktioniert es. sowohl tabelle, das feld varchar ( varchar 255 ) als auch text ( text ) sind alle kollation utf8_general_ci.

    die frage also, woher kommen deine inhalte. post / get ? werden sie gefiltert, wenn ja - wie usw.

    je nachdem wo, wieviel und was gespeichert werden soll, z.b in einer komponente, koennte / sollte man sich einige arbeit abnehmen lassen. eben durch benutzen von jtable. ob es in deinem fall schlau ist, weiss ich nicht. sag du es mir.

  6. #6
    Neu an Board
    Registriert seit
    27.07.2006
    Beiträge
    74
    Bedankte sich
    2
    1 Danksagung in 1 Beitrag

    Standard

    Hallo Matrikular,

    konkret handelt es sich um eine Datensynchronisation. Ich lade Daten aus einer MS SQL Datenbank und schreibe sie in eine Joomlatabelle, damit eine andere Komponente (Fabrik) darauf zugreifen kann. Das Skript wird durch einen Joomla-Scheduler aufgerufen, es steht also das gesamte Framework zur Verfügung.

    Leider führt Dein Beispiel bei mir zu dem ursprünglichen Problem, dass ab dem Umlaut abgeschnitten wird und nur der Teil davor in der Datenbank landet.

    Die Tabelle (MySQL 5, Ausschnitt phpMyAdmin):
    test Anzeigen Struktur Suche Einfügen Leeren Löschen 340 InnoDB utf8_general_ci 144,0 KiB

    Probleme mit POST etc. können ausgeschlossen werden, da ja Dein Beispiel den Text direkt definiert. Woran könnte es noch liegen?

    Vielen Dank.

  7. #7
    Neu an Board
    Registriert seit
    27.07.2006
    Beiträge
    74
    Bedankte sich
    2
    1 Danksagung in 1 Beitrag

    Standard

    Ich konnte das Problem inzwischen lösen. Ursache war die Filecodierung des Skripts. Ich habe mein PhpEclipse auf UTF-8 umgestellt, damit lief es. Warum auch immer das Encoding des Skripts sich auf die Verarbeitung auswirkt....

  8. #8
    Neu an Board
    Registriert seit
    15.06.2011
    Beiträge
    5
    Bedankte sich
    1
    1 Danksagung in 1 Beitrag

    Standard

    Hallo,

    ich weiß, dieser Thread ist über 2 Jahre alt, jedoch ist mein Problem so ziemlich das gleiche, wie in diesem Thread erwähnt.
    Und da ich es für unsinnig halte, einen Neuen aufzumachen, hoffe ich hier mal auf Hilfe.

    Mein Problem:
    Ich bekomme durch Einlesen einer externen Textdatei Namen, Ortsnamen, Daten und Zeiten (etc.), die ich dann mithilfe von Joomla in eine Datenbank einspeichern möchte.
    Da ich diese Projekt bereits ohne das Joomla Framework gemacht hatte, konnte ich super meinen vorherigen Quellcode, mit dem alles wunderbar funktionierte, verwenden.
    Nun, nachdem ich also das Script leicht verändert habe und mich für alle SQL-Befehle beim Framework bedient habe, taucht ein Problem auf:
    Es wird zwar alles richtig eingelesen und gespeichert, die Namen bzw. Ortsnamen mit Umlauten oder Sonderzeichen werden jedoch ab diesem Zeichen abgeschnitten.


    UTF-8?
    Ja, daran habe ich auch zuerst gedacht, habe also alle Dateien auf UTF-8 ohne BOM umgestellt und es erneut ausprobiert: gleicher Effekt.

    Durch Verwendung der JTable Klasse klappt es auch nicht, da die Ortsnamen mit Hilfe dieser eingespeichert werden. Die normalen Namen hingegen werden in einer anderen Tabelle mit normalen INSERT Befehlen eingefügt.

    Des Weiteren kann es auch nicht an der Datenbank liegen, da ich mit dem externen Script die gleichen Tabellen benutze, nur das Script läuft einzeln...


    Ich hoffe, mir kann geholfen werden.
    Falls noch Informationen oder Code-Teile gebraucht werden, gebt mir Bescheid.

    Vielen Dank im Vorraus,
    Surffreak

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein