2015-01-30 11 views
5

Es wurde ein Dutzend Mal gefragt, ich weiß, aber das einzige, was ich will, ist einen deutschen Buchstaben wie 'Ä' in eine Datenbank mit einem PHP-Skript einfügen funktioniert einfach nicht mit den vorhandenen Lösungen.Wie man ö/ä/ü in Datenbank mit php utf8 einfügt

<?php 
header('Content-type: text/html; charset=utf-8'); 
$con = mysqli_connect("localhost", "username", "password"); 

mysqli_set_charset($con, "utf8mb4"); 
mysqli_select_db($con, "database"); 
mysqli_query($con, "SET SESSION CHARACTER_SET_RESULTS =utf8mb4;"); 
mysqli_query($con, "SET SESSION CHARACTER_SET_CLIENT =utf8mb4;"); 
mysqli_query($con, "SET NAMES 'utf8mb4';"); 

mysqli_query($con, 
"SET character_set_results = 'utf8', 
character_set_client = 'utf8', 
character_set_connection = 'utf8', 
character_set_database = 'utf8', 
character_set_server = 'utf8';"); 

$title = 'Ö'; 
$result = mysqli_query($con, 
"INSERT INTO Test (Title) 
VALUES ('" . utf8_encode($title) . "');"); 
#Doesn't work, this was inserted: Ã 
?> 

Die charset der Spalte ‚Titel‘ eingestellt ist und die Tabelle selbst seine utf8_general_ci utf8mb4_general_ci. MySQL Server Version ist 5.5.31 MySQL Charset ist UTF-8 Unicode

Weiß jemand, was ich falsch mache oder fehle ich hier etwas?

+0

'mysqli_query ($ con," SET SESSION CHARACTER_SET_RESULTS = latin1; "); mysqli_query ($ con, "SET SESSION CHARACTER_SET_CLIENT = latin1;"); 'Sollte utf8mb4 und nicht latin1 sein. –

+0

Stellen Sie sicher, dass die Quelle Ihrer Daten UTF8 sendet. Wenn Sie nicht angeben, Ihre Webseite ist UTF8, könnte es in so etwas wie Windows-1252 senden – Machavity

+0

überprüfen Sie phpMyAdmin Ihre Tabelleneinstellungen, wahrscheinlich müssen Sie Zeichensatz für die Tabelle – Alex

Antwort

0

Wie Mihai sagte, ich musste die utf8_encode() -Funktion entfernen, die den Zeichensatz vermasselt. Nach dem Entfernen funktioniert es so glatt wie es sollte.

Verwandte Themen