php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.02.2009, 14:31  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard [Erledigt] utf8 kodierung

Ich habe auf einer seite ein Problem mit der Zeichenkodierung gehabt. (umlaute)

ausgangszustand:

-Alle dateien waren utf-8 kodiert
-in den html dateien stand <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-datenbanken waren latin1_swedish_ci

Im browser angekommen ist die seite als iso-xxx kodiert.
Werte aus datenbanken wurden korrekt dargestellt, werte die in php dateien ausgegeben wurden (also ich red immer von umlauten äöü..) wurden nicht korrekt dargestellt.

Nach einigem nachforschen warum die seite nicht utf-8 ankommt, trotz meta kodierung, hab ich das in die seite eingesetzt
PHP-Code:
header('Content-Type: text/html; charset=utf-8'); 
Jetzt wurden die Daten aus den php dateien richtig dargestellt, aber die aus den datenbanken dafür nichtmehr.
Nachgeschaut als was db kodiert ist, und von latin1... auf utf8_unicode_ci
umgestellt.
wieder ausprobiert:
Die werte werden immernoch falsch angezeigt.

Hab ich die falsche kodierung benutzt oder wo liegt mein fehler?

Danke
Screeze ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.02.2009, 15:16  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Wenn Du bei MySQL den Zeichensatz umstellst, wird der bisherige Inhalt nicht umgewandelt. Der MySQL Server interpretiert die Bytesequenzen nur anders.
David ist offline   Mit Zitat antworten
Alt 25.02.2009, 15:50  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Da die wenigsten mysql-server als standard-charset für die Verbindung utf-8 haben, muss man ihnen das vorher sagen, daher vor allen anderen Querys ein:
Code:
SET NAMES 'utf8'
senden.

dann sollte es auch mit mysql und utf-8 klappen.
robo47 ist offline   Mit Zitat antworten
Alt 25.02.2009, 17:00  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

Zitat:
Zitat von David Beitrag anzeigen
Wenn Du bei MySQL den Zeichensatz umstellst, wird der bisherige Inhalt nicht umgewandelt. Der MySQL Server interpretiert die Bytesequenzen nur anders.
ok habe die tabellen komplett geleert, bei neuen einträgen gibt es das selbe problem wieder

Zitat:
Zitat von robo47 Beitrag anzeigen
Da die wenigsten mysql-server als standard-charset für die Verbindung utf-8 haben, muss man ihnen das vorher sagen, daher vor allen anderen Querys ein:
Code:
SET NAMES 'utf8'
senden.

dann sollte es auch mit mysql und utf-8 klappen.
Habe dann direkt nach dem DB-verbindungsaufbau
PHP-Code:
mysql_query("SET NAMES 'utf8'"); 
gepackt.
Nun erscheinen alle umlaute als ?

habe dann den befehl in
PHP-Code:
mysql_query("SET NAMES 'utf-8'"); 
geändert, und die umlaute erscheinen wieder wie vorher als komische zeichen.

hab ichs falsch verstanden gehabt?
Screeze ist offline   Mit Zitat antworten
Alt 25.02.2009, 17:36  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Wenn du jetzt einen neuen Eintrag vornimmst... Sind die Sonderzeichen dort auch verkehrt? SET NAMES setzt die Verbingung nämlich auf UTF-8, konvertiert aber keine schon vorhandenen Daten.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 25.02.2009, 20:13  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

Zitat:
ok habe die tabellen komplett geleert, bei neuen einträgen gibt es das selbe problem wieder
hasts warscheinlich übersehen, ich hab sämtliche daten aus der datenbank gelöscht (TRUNCATE) und danach neue erstellt, bei denen das wieder falsch gemacht wird.
Screeze ist offline   Mit Zitat antworten
Alt 25.02.2009, 20:35  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

auch wenn ich werte mit
Zitat:
&nbsp;
ind die db schreib, wird das durch einen platzhalter statt durch ein leerzeichen ersetzt...

Also mit kodierungen steh ich auf kriegsfuß, kann mir da jemand weiterhelfen ?
Screeze ist offline   Mit Zitat antworten
Alt 25.02.2009, 21:48  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Kannst Du einfachen (aber konkreten) Beispielcode posten, der bei Dir zu fehlerhaften Ausgaben führt?
David ist offline   Mit Zitat antworten
Alt 26.02.2009, 12:35  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

Jep hab mal was gebastelt:

DATENBANK:
-kodiert: utf8_unicode_ci
-inhalt tabelle posts, spalte post von id = 3 (gerade angelegt):
Zitat:
asd äöü
DATEIEN:
db_connection.php
PHP-Code:
<?php
require_once('mysql.php');
$con mysql_connect(db_hostdb_userdb_passTRUE);
if(!
$con) {
    die(
'Datenbank verbindung nicht möglich');
}
if(!@
mysql_select_db(db_database$con)) {
    die(
'Auswahl der Datenbank fehlgeschlagen');
}
define("db_con"$con);
mysql_query("SET NAMES 'utf-8'");
?>
test.php
PHP-Code:
<?php
require_once('mysql.php'); // Hier werden zugangsdaten und tableprefix als konstanten deklariert
require_once('db_connection.php');

header('Content-Type: text/html; charset=utf-8');

$result mysql_query("SELECT * FROM `" db_tableprefix "posts` WHERE `id` = '3'"db_con);
$data mysql_fetch_object($result);

echo 
$data->post;
?>
Führt zur fehlerhaften ausgabe, äöü werden nicht korrekt angezeigt.
Screeze ist offline   Mit Zitat antworten
Alt 26.02.2009, 12:46  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

Hääääää?

wenn ich jetzt
header('Content-Type: text/html; charset=utf-8');
entferne, wird es wieder richtig angezeigt?
die seite wird dann als
ISO-8859-1
kodiert ausgegeben...

ich dachte es muss überall die gleiche kodierung sein, oder irre ich mich?
vorher hatte das nicht geklappt.. eigenartig...
Screeze ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Excel *.csv Import. Problem mit utf8?? go1denboy Datenbanken 3 27.05.2009 23:36
komische zeichen in phpmyadmin utf8 slave1970 Datenbanken 1 31.01.2009 19:56
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 12:19
[Erledigt] Mail() und polnischer Text UTF8 verändert Sonderzeichen Wolla PHP Tipps 2008 3 21.08.2008 00:10
Sonderzeichen, URL und UTF8 (we love it) PsychoEagle PHP Tipps 2008 4 06.08.2008 13:55
[Erledigt] Utf8 SJahr PHP-Fortgeschrittene 11 21.05.2008 17:40
Datenimport von UTF8 Daten TanerCa Datenbanken 2 17.10.2007 11:42
UTF8 Dump erzeugt nach import in UTF8 kod DB falsche Umlaute Carino Datenbanken 18 07.05.2007 23:49
Verständnisprobleme bei Utf8 > Character Set > Collate erna Datenbanken 4 20.03.2007 14:08
utf8 datenverarbeitung mit php/mysql aktionkuba PHP Tipps 2007 3 10.11.2005 15:25
MYSQL - ASCII query in UTF8 Tabelle PHP Tipps 2005-2 1 14.09.2005 14:43
MySQL-Zeichensatz: UTF-8 Unicode (utf8) richtig? Datenbanken 5 30.08.2005 20:20
WHERE CONVERT( `url` USING utf8) ??? Datenbanken 0 03.08.2005 15:01
utf8 encode Text sortieren axelnes PHP-Fortgeschrittene 5 01.08.2005 15:54
[Erledigt] UTF8 und MySQL 4.0 Datenbanken 5 18.04.2005 21:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/datenbanken/52251-erledigt-utf8-kodierung.html, set names utf8, php utf8, utf8 kodierung, falsche kodierung php, set names utf8 php, php umlaute falsch kodiert, mysql utf-8 decodieren, alle dateien in utf kodieren, datenbankverbindung utf8, php datenbankverbindung utf8, utf8 kodieren, mysql auf utf-8 kodieren, umlaute php trotz kodierung, datenbank verbindung utf 8, utf-8 kodierungen, php, kodierung datenbank, utf8 kodiert, html ist utf-8 kodiert wird aber nicht angezeigt

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum