php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.09.2010, 21:00  
Neuer Benutzer
 
Registriert seit: 10.09.2010
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
hotte befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] UTF-8 und die ewigen Probleme

Hallo ihrs,

ich weiß, dass dieses Thema im Internet schon zig millionen Male durchgekaut wurde. Ich verzweifel allerdings gerade daran, Sonderzeichen über PHP in eine MySQL-Tabelle zu kriegen.

Zur DB-Struktur:
- Tabelle, sowie einzelne Spalten haben als Collation "utf8_general_ci).
- Die Spalte, in der die Sonderzeichen hinzugefügt werden sollen, ist vom Type "Text".

Zu den php-Dateien:
- alle Dateien auf dem Webserver sind UTF-8 kodiert (ohne BOM)
- im HTML-Header ist der meta-Tag mit dem Charset "UTF-8" vorhanden
- bevor Daten in die DB geschrieben werden, führe ich ein mysql_query('SET NAMES "utf-8"); aus

Wenn ich nun den Befehl INSERT INTO table(column) VALUES("ä"); aus einer php-Datei heraus an die DB sende, wird in der DB nur "ä" eingefügt.

Das Ganze klappt allerdings nur auf dem Webserver im Internet nicht.

Auf meinem lokalen Webserver funktioniert das Eintragen hingegen korrekt.

Wenn ich allerdings auf dem Webserver im Internet die SQL-Query über PHPMyAdmin abschicke, sind die Werte korrekt.

Was mache ich falsch?

VG
hotte
hotte ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.09.2010, 21:17  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von hotte Beitrag anzeigen
Wenn ich nun den Befehl INSERT INTO table(column) VALUES("ä"); aus einer php-Datei heraus an die DB sende, wird in der DB nur "ä" eingefügt.
Das sind die zwei Bytewerte, die in UTF-8 ein ä darstellen - nur in einer anderen Kodierung interpretiert.

Wie kontrollierst du denn das, was in die DB eingetragen wurde?

Zitat:
- im HTML-Header ist der meta-Tag mit dem Charset "UTF-8" vorhanden
Dass eine ggf. per HTTP im Content-Type-Header gemachte Angabe höhere Priorität hast, hast du berücksichtigt?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 10.09.2010, 21:41  
Neuer Benutzer
 
Registriert seit: 10.09.2010
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
hotte befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Wie kontrollierst du denn das, was in die DB eingetragen wurde?


Dass eine ggf. per HTTP im Content-Type-Header gemachte Angabe höhere Priorität hast, hast du berücksichtigt?
Ahh. Daran hab ich in keiner Sekunde gedacht.
Ich habe nun in der entsprechenden PHP-Datei folgenden Befehl hinzugefügt:
header('Content-type: text/html; charset=utf-8');

War das richtig? Das Eintragen funktioniert damit nämlich auch nicht.

VG
hotte ist offline   Mit Zitat antworten
Alt 11.09.2010, 10:15  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 492
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von hotte Beitrag anzeigen
Das Eintragen funktioniert damit nämlich auch nicht.
Dann bleibt ja nur noch die Frage
Zitat:
Zitat von ChrisB Beitrag anzeigen
Wie kontrollierst du denn das, was in die DB eingetragen wurde?
unbeantwortet (deren Antwort mich übrigens auch brennend interessiert).
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden
mimomamu ist offline   Mit Zitat antworten
Alt 11.09.2010, 10:28  
Neuer Benutzer
 
Registriert seit: 10.09.2010
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
hotte befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mimomamu Beitrag anzeigen
Dann bleibt ja nur noch die Frage unbeantwortet (deren Antwort mich übrigens auch brennend interessiert).
Na ich lade PhpMyAdmin und lass mir die Einträge anzeigen. Dann steht dieser 2-Byte-Wert drin, wenn ich SQL über mein php-Skript ausführe. Wenn ich hingegen die exakt gleiche SQL Abfrage über phpMyAdmin sende, dann wird das Sonderzeichen korrekt angezeigt.

Ich sehe es im Übrigen auch, wenn ich die Tabelle wieder auf meiner Seite ausgeben lass. Alle Sonderzeichen, die über phpMyAdmin eingetragen wurden, sind korrekt. "ur die Sachen, die ich über mein php-Skript laufen lasse stimmen nicht.

VG
hotte ist offline   Mit Zitat antworten
Alt 11.09.2010, 10:36  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 492
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Es scheint als ob du Daten explizit UTF-8-kodierst. Wenn die Daten bereits in UTF-8 vorliegen, dann führt eine erneute Kodierung zu dem von dir beobachteten Effekt.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden
mimomamu ist offline   Mit Zitat antworten
Alt 11.09.2010, 13:40  
Neuer Benutzer
 
Registriert seit: 10.09.2010
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
hotte befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mimomamu Beitrag anzeigen
Es scheint als ob du Daten explizit UTF-8-kodierst. Wenn die Daten bereits in UTF-8 vorliegen, dann führt eine erneute Kodierung zu dem von dir beobachteten Effekt.
Ich komm grad überhaupt nicht mehr klar. Ich find den Fehler einfach nicht.

Folgender php-Code schreibt ein korrektes Sonderzeichen in die Tabelle:
<?php
$mycon = mysql_connect($cfg['mysql']['host'], $cfg['mysql']['username'], $cfg['mysql']['password']);
if (!$mycon) {
die('Verbindung fehlgeschlagen.');
}
mysql_select_db($cfg['mysql']['database'], $mycon);

$sql = 'INSERT INTO $cfg['mysql']['table'](title) VALUES("ä")';
$res = mysql_query($sql, $mycon);
if (!$res) { die('Ungültige Abfrage.';}
?>

Wie ihr seht, steht da nix mit Umcodierung in UTF-8. Die Datei hab ich in Windows erzeugt und liegt somit im ANSI-Format vor.
Sehe ich das richtig, dass MySQL ankommende Daten bevor sie in die DB eingetragen werden, mit der entsprechend angegebenen Collation der Spalte konvertiert?

Ich blick hier langsam net mehr durch^^.

LG
hotte ist offline   Mit Zitat antworten
Alt 11.09.2010, 13:40  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von hotte Beitrag anzeigen
Na ich lade PhpMyAdmin und lass mir die Einträge anzeigen.
Und im phpMyAdmin hast du die Kodierung der Verbindung auch auf UTF-8 eingestellt ...?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 11.09.2010, 13:42  
Neuer Benutzer
 
Registriert seit: 10.09.2010
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
hotte befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Und im phpMyAdmin hast du die Kodierung der Verbindung auch auf UTF-8 eingestellt ...?
Die Verbindung im phpMyAdmin ist auf UTF-8 gesetzt, ja.
hotte ist offline   Mit Zitat antworten
Alt 13.09.2010, 13:12  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 3.891
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist ein sehr geschätzer Menschlstegelitz ist ein sehr geschätzer Menschlstegelitz ist ein sehr geschätzer Menschlstegelitz ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von hotte Beitrag anzeigen
Folgender php-Code schreibt ein korrektes Sonderzeichen in die Tabelle:
PHP-Code:
    $sql 'INSERT INTO $cfg['mysql']['table'](title) VALUES("ä")'
Diese Code trägt überhaupt nichts in die DB ein...
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz 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
Probleme mit Word Lollix Off-Topic Diskussionen 2 26.03.2010 11:52
CHarset und Probleme mit IE KeKs0r HTML, Usability und Barrierefreiheit 10 26.01.2010 21:59
[Erledigt] fopen() Probleme jN^ PHP Tipps 2009 2 18.08.2009 12:31
Firefox / IE - Probleme HTML, Usability und Barrierefreiheit 5 20.07.2009 17:04
Win+Firefox alles ok, IE oder Linux: Probleme vollderdude PHP Tipps 2009 6 02.01.2009 16:17
[Erledigt] Probleme mit iFrame rocco HTML, Usability und Barrierefreiheit 1 28.12.2008 17:44
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
[Erledigt] Probleme beim Datenupload zu meiner Datenbank Datenbanken 3 05.09.2005 19:47
[Erledigt] Probleme mit Sonderzeichen... Datenbanken 1 02.08.2005 23:37
[Erledigt] hilfe! probleme mit... PHP Tipps 2005 4 12.04.2005 22:55
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Probleme mit Fremdsprachen HTML, Usability und Barrierefreiheit 2 21.09.2004 17:11
PHP Bilder in DB / Probleme bei Änderung PHP-Fortgeschrittene 1 05.06.2004 11:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
phpmyadmin utf, $res=mysql_query(\set names \'utf8\'\);, phpmyadmin utf-8 problem, sql insert utf8_ php, php firefox sonderzeichen hinzugefügt?

Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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