Zeichenkodierung...

Loomis

Mitglied Bunt
Ich habe nun mindestens fünfmal alles nachgeschaut (!)

Datenbank:
Code:
MySQL-Zeichensatz:  UTF-8 Unicode (utf8)
Tabelle:
Code:
Format  	dynamisch
Kollation 	utf8_unicode_ci
Zeilen 	8
Zeilenlänge ø 	80
Zeilengröße ø 	464 Bytes
Nächste Autoindex 	9
Erzeugt am 	17. Juni 2008 um 13:42
Aktualisiert am 	17. Juni 2008 um 14:06
Spalte (Beispiel):
Code:
stadt  	varchar(32)  	utf8_unicode_ci
HTML Formular:
HTML:
<form action="" method="post" accept-charset="UTF-8">
HTML Header:
HTML:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Auszug PHP Script ( Value von SQL Insert ):
PHP:
"' .mysql_real_escape_string( $_SESSION['form2_adresse_4'] ). '",
Inhalt Session:
Code:
form2_adresse_4|s:17:"Gemünden am Main";

Ergebnis:
db1.png

Und die Dateien sind auch UTF-8 ohne BOM kodiert.

In anderen Scripten gehts auch ohne Probleme :mad:

Noch eine Idee?

//edit: einen header schicke ich übrigens auch noch zusätzlich:
PHP:
header('Content-Type: text/html; charset=utf-8');
 
Zuletzt bearbeitet:
Unterdrückst du möglicherweise Fehlermeldungen? Denn der Ausgabe zu urteilen, sind die Daten UTF-8-kodiert, werden jedoch als ISO 8859-1 interpretiert. Das heißt, dass die Zeichenkodierung nicht korrekt angegeben wurden, was wiederum heißt, dass die header()-Anweisung eigentlich eine Fehlermeldung erzeugen müsste, da die Daten ja sonst richtig dargestellt werden müssten. Oder nutzt du vielleicht noch die htmlentities()-Funktion?
 
So sieht der Anfang der Datei aus, die meine Daten in die Datenbankschreibt:
PHP:
<?php
ob_start();
error_reporting( E_ALL | E_STRICT );
session_start();
header('Content-Type: text/html; charset=utf-8');

htmlentities verwende ich nicht. Nur mysql_real_escape_string wende ich auf die Daten an.
Und es kommt gar keine Fehlermeldung.

Ich habe mir mal getallheaders nach dem mysql_query ausgeben lassen, also ganz am Ende der Datei. Das Ergebnis ist:
Code:
array(11) {
  ["Host"]=>
  string(9) "localhost"
  ["User-Agent"]=>
  string(81) "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0"
  ["Accept"]=>
  string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
  ["Accept-Language"]=>
  string(35) "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3"
  ["Accept-Encoding"]=>
  string(12) "gzip,deflate"
  ["Accept-Charset"]=>
  string(30) "ISO-8859-1,utf-8;q=0.7,*;q=0.7"
  ["Keep-Alive"]=>
  string(3) "300"
  ["Connection"]=>
  string(10) "keep-alive"
  ["Referer"]=>
  string(56) "xxx/register/step4.php"
  ["Cookie"]=>
  string(42) "PHPSESSID=d57e86b0a8bf58896538c6d0598f238f"
  ["Cache-Control"]=>
  string(9) "max-age=0"
}
Accept-Charsset => ISO-8859-1... ich verstehe die Welt nichtmehr.
 
Zuletzt bearbeitet:
db2.png
Das war scheinbar die Lösung, danke Adrian_Broher.

PHP:
    $db = mysql_connect( DB_HOST, DB_USER, DB_PASS );
          mysql_select_db( DB_NAME );
          mysql_query( "SET NAMES 'utf8'" );
          mysql_query( "SET CHARACTER SET 'utf8'" );
 
Zurück