SQL Umlaute, Zeichen fehlen

smallwall

Lt. Junior Grade
Registriert
Feb. 2014
Beiträge
446
Hi,
ich habe das Problem, daß einige Umlaute (nicht alle) so aussehen im phpmyadmin:
sql_umlaut.png
Der String, der geschrieben wurde, stammt aus dieser Zeile
Code:
[Black "Künitz, Klaus"]
Also wurde das "ün" zu einem Fragezeichen.

Andere werden transformiert ü => ue. Das möchte ich eigentlich auch nicht.
Geschrieben wird mit PDO bindParam(":value", $value);

Mein Connect sieht so aus
PHP:
    public function connect() {

        $connect = new PDO("mysql:host=$this->dbhost;dbname=$this->dbname", $this->dbuser, $this->dbpass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

        $connect->query("SET CHARACTER SET utf8");
        $connect->query("SET NAMES 'utf8'");

        return $connect;
    }
Weiß nicht genau, ob dort doppelt UTF-8 probiert wird, so genau hab ich mir das noch nicht angeschaut.

Hat jemand ne Idee, wie ich die Transformation ändere, bzw den kaputten Umlaut samt verschlucktem Zeichen reparieren kann?
 
Ist deine Webseite sowie die DB denn auch in utf-8?

Wenn du nur die Verbindung so setzt, bringt's nicht viel ^^
 
Wie sehen denn die Werte aus, wenn du direkt auf der Bash mit der DB redest? Also einmal auslesen und einmal einfügen und danach auslesen. Wichtig, die Bash muss auch UTF8 sein.
 
mysql -h 195.30.108.60 -u devphp -p
Enter password:
ERROR 1045 (28000): Access denied for user '...'@'...' (using password: YES)

Hab noch nie remote access auf die Datenbank gemacht. Mach ich da was grundlegend falsch? Könnte nur localhost zugriff haben?
 
Ahjo, habs geschafft, die Umlaute kann ich mim Terminal einfach eintragen, dort wird nichts transformiert und nichts verschluckt. Warum klappt mein PHP nicht?
 
PHP:
header('Content-Type: text/html; charset=utf-8');
... sende ich in jeder Seite.
Keine Ahnung wie ich mein Browser Encoding herausfinde... das müsste auch egal sein, auf dem Server liegt die Datei ja und dort stehen die Umlaute noch drin.
 
Zuletzt bearbeitet:
Keine Ahnung was mir das sagen soll. Dort geht es um Tomcat. Wie schon gesagt, die Datei liegt auf dem Server mit Umlauten, von dort wird sie gelesen und in die DB geschrieben. Dabei werden die Umlaute umgewandelt und sogar Zeichen verschluckt. Es liegt nicht daran, dass die DB/Table keine Umlaute aufnehmen kann, wie wir jetzt wissen.
 
Wie wird sie gelesen? Ich kenne mich mit PHP nicht aus, aber in Java muss man beim Einlesen einer Datei das Charset ebenfalls angeben sonst kommt es exakt zu solchen Problemen.
 
Naja mit $ile = file_get_contents(...); Dann habe ich einen String mit "...Künitz, Klaus..." etc. in $file, dieser kommt in der DB als Fragezeichen an und das n fehlt... Wenn ich den String anzeige, steht dort genau das...
 
Öffne die Datei mal bitte mit Notepad++ und sage, was unten rechts in der Ecke bei Encoding steht.
Oder kannst du die Datei veröffentlichen?
 
Hab jetzt grad Ubuntu am laufen, also kein Notepad. ABER grade ist mir etwas aufgefallen, habe nochmal eine neue Datei geschrieben, http://devphp.de/pgn/showfile.php CTRL+F "klaus", ein kaputtes Zeichen. Wenn ich die Datei direkt beim Upload anzeigen lasse, ist dort ein Umlaut. Da scheint etwas bei file_put_content() zu bocken.

Edit: Mit utf8-header sieht man ein ü, ohne nicht.
 
Zuletzt bearbeitet:
Kommt drauf an. In der HTTP Response sieht es gut aus, nur das Rendering im Browser klappt nicht. Habe es fix mit Linux Mint getestet.

snip.JPG
 
Ahso. Dann muss ich den header doch senden. Hab schon wieder Panik geschoben =) Zum Glück hat du es aufgeklärt. Bleibt die Frage, warum es von dort nicht unbeschadet in der DB ankommt.
 
Zurück
Oben