2 2 Stimmen

PHP/MySQL: Text wird vor Umlauten und Sonderzeichen abgeschnitten

Frage von Compi | 15.09.2012 um 21:34 Uhr

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

Stefan Trost

Profil anzeigen | Nachricht
Avatar
5Beste Antwort
5 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 Uhr

AntwortenPositiv Negativ

Compi

Profil anzeigen | Nachricht
Avatar
00 Stimmen

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

Positiv Negativ
-11 Stimme

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

Positiv Negativ
00 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 Uhr

Positiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

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.