44 Stimmen

PHP/MySQL: Text wird vor Umlauten und Sonderzeichen abgeschnitten

Frage von Compi | 15.09.2012 um 21:34

Ich habe ein komisches Problem in einem PHP Skript, in dem ich einen String in eine MySQL Datenbank eintragen möchte:

Obwohl der Text selbst in der MySQL-Query noch vollständig ist, kommt er nicht komplett in der Datenbank an. Jedes mal wird der Text genau vor dem ersten Sonderzeichen (zum Beispiel einem Umlaut wie ä, ü oder ö) abgeschnitten. Hat jemand eine Idee, was das sein könnte?

AntwortenPositivNegativDatumStimmen
7Beste Antwort7 Stimmen

Mit großer Wahrscheinlichkeit hat das Problem mit dem Zeichensatz (der Zeichen-Kodierung des Strings) zu tun. Vermutlich liegen die Daten erst im ANSI-Charset vor und in der MySQL Tabelle soll der String als UTF-8 abgespeichert werden. Bei den Buchstaben von A bis Z unterscheiden sich diese beiden Zeichensätze nicht, so dass es erst bei den Umlauten und bestimmten Sonderzeichen zu Problemen kommt.

In diesem Fall kannst du folgenden Code benutzen:

// $text (ANSI)
$text = utf8_encode($text);
// $text (UTF-8)

// MySQL
$query = "UPDATE tab SET text='$text' WHERE id=1";

Damit wandelst du den ANSI kodierten Text in einen UTF-8 kodierten Text um, den du in der MySQL Query verwenden kannst.
18.09.2012 um 17:02

AntwortenPositiv Negativ
22 Stimmen

Genau das war das Problem. Jetzt funktioniert es wie es soll! Vielen Dank!
19.09.2012 um 18:24

Positiv Negativ
04 Stimmen

Boooooohhaaaaaa vielen, vielen Dank!!! Das hat mir super gut geholfen. Ich stand schon kurz vor dem Wahnsinn^^
16.10.2014 um 00:47

Positiv Negativ
02 Stimmen

Ja, danke, Problem gelöst.

Eventuell muss man auch noch diese Zeilen als erste ins HTML bzw. PHP-Dokument (Head) einfügen:

(Jeweils in größer/kleiner als-Klammern einschließen)

!DOCTYPE html (das Ganze xhtml1-transitional.dtd-Zeugs braucht es glaub ich in HTML5 nicht mehr, nur noch diese Zeile)

meta http-equiv="Content-Type" content="text/html; charset=utf-8"

meta charset="UTF-8"

Naja, vielleicht kann das jemand besser erklären, bin kein Web-Programmierer. Jedenfalls hat utf8_encode($text) geholfen und die Sonderzeichen werden wieder richtig angezeigt.
05.01.2017 um 06:22

Positiv Negativ
Antworten
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.