selfhtml.de - Alles für den Webmaster!

 

Empfehlung:

wix.com

Kostenlose Homepage

Besuchen Sie auch:

Jobs:

UTF8 mit MySql

Autor: FelixF
Datum: 02.03.2013 18:19:11

Ich grüße euch alle zusammen.

Ich versuche derzeit Daten in einer MySql Datenbank zu schreiben ohne die Umlaute in HTML Tags umwandeln zu müssen. Mein PHP Script ist in UTF8 ohne BOM gespeichert. Als Meta Tag habe ich <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> und die Datenbank habe ich auf UTF8_general_ci eingestellt.

Jetzt zu meiner Frage: Die Umlaute werden alle richtig angezeigt im Dokument. Allerdings werden Umlaute in der Datenbank nicht als Umlaute gespeichert sondern ein ö beispielsweise als ö.

Ist das normal oder habe ich bei meinen Einstellungen einen Fehler gemacht. Ich hätte gerne, dass die Umlaute auch in der Datenbank als Umlaute zu erkennen sind.

Grüße Felix



Re: UTF8 mit MySql

Autor: Manya
Datum: 02.03.2013 19:06:04

>  Die Umlaute werden alle
> richtig angezeigt im Dokument. Allerdings werden
> Umlaute in der Datenbank nicht als Umlaute
> gespeichert sondern ein ö beispielsweise als ö.
>
> Ist das normal oder habe ich bei meinen
> Einstellungen einen Fehler gemacht. Ich hätte
> gerne, dass die Umlaute auch in der Datenbank als
> Umlaute zu erkennen sind.

Hallo Felix,

Ich hatte auch mal ein Problem mit den Umlauten.
Hilft dir dieser Thread weiter?

http://www.selfhtml.de/forum/zeigebeitrag_4_134615_134585_0.php
und folgende

Gruß,
Manya

PS
Vielleicht könnte einer der Mods mal die Überschrift entsprechend ändern, dann hätte Felix den Thread auch sicher leichter gefunden. ;-)



Re: UTF8 mit MySql

Autor: FelixF
Datum: 03.03.2013 09:48:33

Grüß dich Manya,

> Ich hatte auch mal ein Problem mit den Umlauten.
> Hilft dir dieser Thread weiter?
>
>
> http://www.selfhtml.de/forum/zeigebeitrag_4_134615_134585_0.php
> und folgende
>

Danke für den Hinweis, doch leider hat er mir nicht weitergeholfen. Also ich habe
- Meinen Editor auf UTF8 gestellt
- Meine PHP Datei ist in UTF8 gepeichert
- Meine MySql DB hat utf8_gerneral_ci als Kollation

Was jetzt passiert:
In einer PHP Datei kann ich Umlaute als solche eingeben UND die werden auch als Umlaute ausgegeben.
Speichere ich einen Text in die DB, werden in der DB die Umlaute falsch kodiert dargestellt.
Hole ich die Daten wieder ab und gebe sie in PHP wieder aus der DB, werden die Umlaute WIEDER richtig dargestellt.


Jetzt ist mir allerdings folgendes passiert, was ich nicht verstehe. Ich habe alles wieder auf ISO-8859-1 zurückgestellt. Dabei habe ich allerdings vergessen htmlentities zu verwenden. Dadurch wurden Umlaute in die Datenbank als Umlaute übernommen und nicht als ü. Die Umlaute werden aber trotzdem korrekt dargestellt, sowohl in der Datenbank wie auch im eigentlichen Dokument.
Ich dachte immer, dass ISO-8859-1 htmlentities voraussetzt?

Grüße Felix



Re: UTF8 mit MySql

Autor: Manya
Datum: 03.03.2013 10:40:31

>  Also ich habe
> - Meinen Editor auf UTF8 gestellt
> - Meine PHP Datei ist in UTF8 gepeichert
> - Meine MySql DB hat utf8_gerneral_ci als
> Kollation
>
> Was jetzt passiert:
> In einer PHP Datei kann ich Umlaute als solche
> eingeben UND die werden auch als Umlaute
> ausgegeben.
> Speichere ich einen Text in die DB, werden in der
> DB die Umlaute falsch kodiert dargestellt.
> Hole ich die Daten wieder ab und gebe sie in PHP
> wieder aus der DB, werden die Umlaute WIEDER
> richtig dargestellt.

Hallo,
Das ist mir ein Rätsel, was aber nichts zu bedeuten hat, denn ich bin alles andere, als ein PHP-Profi. Ich weiß nur, daß man konsequent an allen möglichen Stellen immer den gleichen Zeichensatz einstellen muß.

Eine letzte Möglichkeit kenne ich noch.
Funktioniert es, wenn du alles wieder auf UTF-8 einstellst, und dann ganz oben im Script, also direkt nach dem Verbinden mit der DB
<?php
$db_link=mysqli_connect .....

noch das hier einfügst:

mysqli_set_charset($db_link, 'utf8');

Mehr wüßte ich jetzt auch nicht, und hoffe, das hilft.

Gruß
Manya



Re: UTF8 mit MySql

Autor: FelixF
Datum: 05.03.2013 18:10:13

> Das ist mir ein Rätsel, was aber nichts zu
> bedeuten hat, denn ich bin alles andere, als ein
> PHP-Profi. Ich weiß nur, daß man konsequent an
> allen möglichen Stellen immer den gleichen
> Zeichensatz einstellen muß.

Mir ist es auch ein Rätsel. Ich werde jetzt aber bei ISO bleiben, da ich bei dem Projekt gerade nicht die Zeit habe, etwas neues auszuprobieren und werde dann bei Gelegenheit es nochmal versuchen.

> Eine letzte Möglichkeit kenne ich noch.
> Funktioniert es, wenn du alles wieder auf UTF-8
> einstellst, und dann ganz oben im Script, also
> direkt nach dem Verbinden mit der DB
> <?php
> $db_link=mysqli_connect .....
>
> noch das hier einfügst:
>
> mysqli_set_charset($db_link, 'utf8');

Bisher verwende ich mysql_... Dort gibt es die Funktion auch und werde sie ausprobieren.

Danke nochmal für deine Hilfe ;)

Grüße Felix



Re: UTF8 mit MySql

Autor: T.Jung
Datum: 07.03.2013 12:36:24

> > mysqli_set_charset($db_link, 'utf8');
>
> Bisher verwende ich mysql_... Dort gibt es die
> Funktion auch

Aber »erst« seit PHP 5.2.3.
Bei einer älteren PHP-Version sollte es funktionieren, wenn Du statt dessen
mysql_query("SET NAMES 'utf8'");
verwendest.

Und: Mit der PHP-Version 5.5.0 sind die mysql_... Funktionen als »deprecated« gekennzeichnet; sie werden irgendwann in der Zukunft komplett aus PHP verschwinden.

Vermutlich wird es bis dahin noch ein paar Jahre dauern; aber bei neuen Projekten (die u.U. dann einige Jahre gepflegt werden) ist es ratsam, schon jetzt etwas anderes zu verwenden, also z.B. die mysqli_... Funktionen.

Gruß,
Tobias