Zum Inhalt springen

[PHP/MySQL] Sonderzeichen speichern


Empfohlene Beiträge

Zuerst mal sorry, falls es diese Frage schon öfter gab, aber ich habe bei der Suche wohl nicht die richtigen Suchwörter erwischt.

Ich habe das Problem, dass ich in meiner Datenbank in ein Feld vom Typ utf8_general_ci einen Text mit Sonderzeichen speichern möchte (Beispielsweise "Köln"). In der Datenbank habe ich jetzt diesen Text so eingestellt, dass dort das ö steht, jedoch bekomme ich bei der Ausgabe nur einen viereckigen Kasten angezeigt. Beim einschreiben per Web-Formular werden anstatt einem ö auch nur 2 merkwürdige Zeichen eingespeichert.

Ich bin jetzt soweit gekommen, dass es irgendwas mit den Datentypen auf sich hat, aber leider hatte ich solche Probleme bisher noch nie, daher bin ich ziemlich Ratlos.

Falls jemand zur Lösung des Problems noch Informationen benötigt, schreibt einfach, was ihr braucht.

Falls der Datentyp der PHP Dateien benötigt wird, bräuchte ich zusätzlich eine kleine Hilfestellung, wo ich den auslesen kann.

Gruß

Shadowman

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du folgendes beachtest, kann nichts schief gehen:

- Die Datei selbst muss in UTF-8 gespeichert sein (auch Dateien, die du per PHP includierst!)

- Sicherstellen, dass der Browser die Datei als UTF-8 empfängt und Daten (Formulareingaben) in UTF-8 sendet. Dazu entweder den Metatag "Content-Type" setzen oder per .htaccess ein Default-Type setzen.

Also:

- Datenbank

- Datei

- Browser

müssen alle UTF-8 "sprechen", dann gibt es kein Problem. Es bringt zB nichts, wenn man Umlaute in PhpMyAdmin per Hand in einem UTF-8 Datenbank ändert, wenn PhpMyAdmin auf ISO-8859 läuft.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auf der Seite habe ich die ganze Zeit schon das hier gehabt:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

In der Datenbank haben alle Tabellen die Kollation utf8_general_ci, sowie alle Text-Felder innerhalb der einzelnen Tabellen. Des Weiteren ist der MySQL-Zeichensatz: (utf8).

Also kann es jetzt nur noch daran liegen, dass die PHP Dateien wahrscheinlich nicht in UTF-8 gespeichert sind, richtig?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sorry für den Doppelpost, aber trotz Konvertierung gab es keine Besserung:

Auszug aus dem dargestellten Quelltext:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
</head>
<body>
?
<table id="header">[/PHP]

An der Stelle wo das "?" steht, steht in der Datei testweise ein "ö"

So langsam verzweifle ich, was ich noch ändern könnte.

Gruß

Shadowman

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, das hat funktioniert. In meinem Editor kann UTF-8 nicht dargestellt werden, weswegen anfangs immer merkwürdige Zeichen standen. Nachdem ich diese gelöscht hatte, war dann das Problem wieder da.

Ich habe mir jetzt einen anderen Editor gezogen, welcher leider nur Shareware ist. Kennst du einen guten Freeware Editor mit Syntax Highlighting?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nachdem ich jetzt alles umgestellt habe funktionieren an den meisten Stellen Sonderzeichen und ich muss sie nicht mehr durch ä etc. ersetzen. Jedoch habe ich jetzt auf der Startseite folgende Meldung:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /test.php:1) in /test.php on line 4

 

Das sind die ersten 4 Zeilen der test.php:

<?php

include('classes/user.class.php');
session_start();[/PHP]

Ich habe schon versucht das Include (was zwingend notwendig ist) testweise rauszunehmen, jedoch schafft dies keine abhilfe.

Laut Quelltext besteht das Problem darin, dass 2 Leerzeichen gesendet werden, was aber in keiner Datei steht.

Des Weiteren besteht immer noch das Problem, dass die Daten, die aus der Datenbank gelesen werden immer noch falsch Dargestellt werden.

Ich hoffe, dass dieses Problem noch irgendwie gelöst werden kann.

Ganz ehrlich, solche Probleme hatte ich bisher noch nie und es ist ziemlich nervig

Bearbeitet von Shadowman
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, darauf habe ich nicht geachtet.

Ich habe alle Dateien in UTF-8 konvertiert und nicht UTF-8 ohne BOM. Ich werde also nochmal alles konvertieren.

Das Session Problem konnte dadurch schon gelöst werden, daher danke klotzkopp

Nur leider bleibt das Problem mit den Sonderzeichen, die aus der Datenbank ausgelesen werden. Die Sonderzeichen werden weiterhin als � angezeigt

Bearbeitet von Shadowman
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Monate später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...