chrisfah
Goto Top

MYSQL Problem mit abgeschnittenem Textfeld (Mediumtext usw.)

Sorry, Frage wurde irrtümlich als gelöst markiert, daher gleiche Frage noch einmal:

Hallo,
wieder einmal eine Frage, bei der ich auf der Leitung stehe:

ich habe eine Tabelle 'kw', in der ich in einem Textfeld 'text' ein Array abspeichere. Natürlich wurde das Array mit db_real_escape(serialize($array)) datenbanktauglich gemacht.
Die funktion db_real_escape sieht dabei folgendermassen aus:
function db_real_escape($string) {
return mysql_real_escape_string($string);
}

Speichere ich nun ein Array ab, und rufe dieses wieder auf. wirft das dabei notwendige unserialize folgenden Fehler auf:
Notice: unserialize(): Error at offset 2712 of 2718 bytes in ...
... wobei sich der offset auch je nach Textfeldtype (Text, Mediumtext ...) ändern kann.

Das Array hat hier zB 3291 Elemente, eine effektive Rohtext-Grösse von 29989 Byte, serialisierte Grösse von 71263 Byte, und escaped+serialized eine grösse von 77747 Byte.
Also alles innerhalb der Grenzen für ein MEDIUMTEXT Feld.
Dennoch wird der Feldinhalt mitten in dem serialisierten Array abgeschnitten.

Hat da jemand eine tip für mich ?

Lg, Chris

NACHTRAG:
Ich konnte das problem eingrenzen:
Im Text kommt der Name "María" vom Fussballer Angel Di María vor. Und dieses " i mit Akut" macht alles kaputt. Ab diesem Buchstaben wird der Text nicht mehr in der DB gespeichert.
Ein ausfiltern des i acute brachte nichts.
Das Problem besteht weiterhin!

Wer hat einen Tip?

Content-ID: 243542

Url: https://administrator.de/contentid/243542

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

colinardo
colinardo 13.07.2014 aktualisiert um 23:22:01 Uhr
Goto Top
Hallo Chris,
Sorry, Frage wurde irrtümlich als gelöst markiert, daher gleiche Frage noch einmal:
du kannst das "Gelöst" selber wieder entfernen indem du den Beitrag "Bearbeitest" und auf der rechten Seite unter der Kategorieauswahl das entsprechende Häkchen entfernst. Siehe dazu auch die FAQ

Danke.

Grüße Uwe
ChrisFah
ChrisFah 16.07.2014 um 10:06:59 Uhr
Goto Top
So, Problem gelöst.
Grund war die Tatsache, daß in der Kette Text einlesen - Text verarbeiten - Text in cachefile zwischenspeichern - Text auch cahefile lesen - Text in Datenbank schreiben irgendwo nicht UTF-8 eingehalten wurde.
Mein problem war, daß PHP nicht ausreichend auf UTF-8 eingeschworen war, und ich daher meine tests mit einem falsch codierten "alten" Cachefile gemacht habe.

Daher hier jener Link, der mir den Weg erleuchtet hat:
Der PHP UTF-8 cheatsheet von LoftDigital unter http://blog.loftdigital.com/blog/php-utf-8-cheatsheet

Lg, Chris