PHP umlaut - Problem

SebiPuck

Erfahrenes Mitglied
Hallo,
Ich habe seid 2 Tagen ein Problem mit umlauten, welches ich einfach nicht lösen kann ...

Mein HTML - Header (codierung only):

Code:
<meta charset="utf-8" />

Ich habe auf der Seite mehrere MySQl Abfragen. (Alles "text" spalten / datensätze).

Bei sogut wie jedem gehen alle Umlaute etc. Nur bei einer Abfrage funktioniert dies nicht ...
Dieses Zeichen sieht man stattdessen: �

Die betroffene DB ist mit utf8_bin formatiert (ich habe es auch schon mit latin1_swedish_ci versucht).
Die anderen sind alle mit latin1_swedish_ci bestückt und bei denen geht es.

Wenn ich iso verwende (im header) geht es zwar bei dieser abfrage, jedoch funktionieren dann keine anderen umlaute auf der page.

Ich weiß nun wirklich nicht mehr weiter,
Danke im Voraus,
LG :)
 
Wie wäre es, alles an Latin1 einfach loszuwerden? Wenn man die UTF-8-umstellung gründlich bzw. überall macht
hat sich das Problem ein für alle Mal erledigt. Also:
Die gesamte DB in UTF-8,
bei der DB-Verbindung (also bei den PHP-Befehlen) kann/ollte man das auch irgendwo einstellen,
die HTML-Meta-Angabe eben (evt. ist die Großschreibung wichtig),
die tatsächliche Kodierung der PHP/HtML-Dateien (einstellbar im Schreibprogramm),
und dazu noch einen header()-Befehl in PHP
 
Hallo,
mir ist schon im Grundgerüst Deines HTML Codes etwas aufgefallen,

HTML:
<html>
</head>
  
  <meta charset="utf-8">

  <title>The HTML5 Herald</title>
  <meta name="description" content="The HTML5 Herald">
  <meta name="author" content="SitePoint">

  <link rel="stylesheet" href="style.css">
  <link href='http://fonts.googleapis.com/css?family=Roboto:400,100,300,500' rel='stylesheet' type='text/css'>

  <!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]--></head>
<body class="reg-body">

Ändere dies mal in:

HTML:
<!DOCTYPE html>
<html>
<head>
  
  <meta charset="UTF-8">

  <title>The HTML5 Herald</title>
  <meta name="description" content="The HTML5 Herald">
  <meta name="author" content="SitePoint">

  <link rel="stylesheet" href="style.css">
  <link href='http://fonts.googleapis.com/css?family=Roboto:400,100,300,500' rel='stylesheet' type='text/css'>

  <!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]--></head>
<body class="reg-body">


Du hast kein DOCTYPE deklariert und direkt nach <html> hast Du </head>.
Vllt. ist dies die Ursache.

[EDIT]
Überprüfe daraufhin noch mal die Datenbank und deren Inhalt, ob dies nicht leider schon in das Symbol geändert wurde.

Sonnige Grüße
 
Ein per HTTP-Header mitgelieferter Charset (Content-Type: text/html; charset=utf-8) hat Vorrang gegenüber einer <meta>-Angabe.

Kann es sein, dass die Daten in deiner DB von Anfang an in einem falschen Encoding drin waren? Zeichen werden dann falsch angezeigt, wenn die angenommene Kodierung nicht mit der eigentlichen Kodierung übereinstimmt.
 
Wie "ComFreek" erwähnte
Es könnte auch an der Apache Einstellung liegen, prüfe mal mit einer ".htaccess" um den Header zu ändern.

.htaccess
Code:
AddType 'text/html; charset=UTF-8' html
 
Ich habe gerade per Chrome Dev Tools nachgeschaut. Die Seite wird bereits mit UTF-8 ausgeliefert. Aber wie gesagt: Es ist völlig egal, mit welchem Encoding du die Seite ausgibst. Die Hauptsache ist, dass die ausgegebenen Daten dasselbe haben!

utf8.PNG
 
[EDIT]
Überprüfe daraufhin noch mal die Datenbank und deren Inhalt, ob dies nicht leider schon in das Symbol geändert wurde.

Sonnige Grüße

Dies hatte ich ja auch erwähnt, aber da der Browser im "Quirks-Mode" arbeitet kann er dies auch zerschießen :)
Wird definitiv dann trotzdem an der Datenbank liegen.

Quirks-Mode
http://carsten-protsch.de/zwischennetz/doctype/einleitung.html

Bitte gebe uns mal Auskunft über Table charset der DB.
Da du jede einzelne Tabelle/Celle sogar einen eigenen Charset geben kannst, der aber standardmäßig auf das zurück greift,
was als Standardeinstellung bestimmt wurde.
 
Ich habe gerade per Chrome Dev Tools nachgeschaut. Die Seite wird bereits mit UTF-8 ausgeliefert. Aber wie gesagt: Es ist völlig egal, mit welchem Encoding du die Seite ausgibst. Die Hauptsache ist, dass die ausgegebenen Daten dasselbe haben!

Anhang anzeigen 63748

Hallo,
Ich werde die Db nun mal leeren und komplett auf utf-8 umstellen. Kann dafür utf8_bin verwendet werden ?

Nun zum Problem: Auf der Register.php wird NICHTS von einer Db ausgelesen. Der ganze Text wurde nur in HTML geschrieben.
Beispiel:

Code:
<h2>COMMUNITY</h2>
            <p>
                Nur Themenbezogene Antworten können weiterhelfen.
            </p>

Danke im Voraus,
LG
 
Schreibe bitte im HTML Code trotzdem:

HTML:
&auml; <!-- ä -->
&Auml; <!-- Ä -->
&ouml; <!-- ö -->
&Ouml; <!-- Ö -->
&uuml; <!-- ü -->
&Uuml; <!-- Ü -->
&szlig; <!-- ß -->

Da es sonst, wie in Deinem fall, zu Anzeige Fehlern kommt.

[EDIT]
Verwende auch bei abfragen per PHP am besten

PHP:
htmlspecialchars();

um bei die in der Textbox geschriebenen "Ö,Ä" usw. in "&Ouml;" umzuwandeln.
 
Zurück