Mysql lässt Umlaute weg insert

Hi Leute,
ich hoffe ihr könnt mir helfen.
Ich habe eine Mysql-Tabelle.

create table schauspieler (id INT AUTO_INCREMENT,PRIMARY KEY(id),name Text,bild Text);

und ein insert:

insert into schauspieler (name,bild) values (‚Matthias_Schweighöfer‘,‚matthias.jpg‘;

Bei einer Mysql-Abfrage gibt er mir jedoch Matthias_Schweighfer aus, anstatt Matthias_Schweighöfer.

Habt ihr irgendeine Idee, wie man das ändern kann?
Ich habe es schon mit

alter table schauspieler alter column name charset=utf8;

probiert, aber das bringt leider nichts.
Ich hoffe ihr habt eine Idee.

Gruß

Polonium7.2

Wo machst du die ausgabe ?
Console ? PHPmyAdmin ? oder Etwa eine Programmiersprache und Browser ?

Hi
Ich lese die mit php aus.

Mit utf-8 sollte das doch klappen oder?

Gruß

Polonium7.2

Moin moin,

Hi
Ich lese die mit php aus.

Da haben wir ja schon das Problem .

Erstens muss du sichestellen das UTF-8 Zeichen in der Datenbank landen.
Dann musst du sicherstellen das du auch die seite mit UTF-8 wieder auslieferst.
P.S. die Tabelle kann latin bleiben , das nicht so wichtig :smile: Wichtig ist das die werte drinne utf-8 sind .

Wenn also alles im PHPMyAdmin Stimmt (da auch wirklich äüö angekommen ist.

  1. Das dein Mysql server in UTF-8 kommuniziert .
  2. Dein Webserver UTF-8 für die Auslieferung nimmt.
  3. Im Header Bereich der Zeichensatz angegeben wurde.

zu 1.

 mysql\_select\_db('datenbank');
 mysql\_query('SET NAMES \'utf8\'');

zu 2.

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

.
.
.

und das convertieren mit SQL von latin in utf-8 kann alles zerstören. denn dann wird das eigentliche utf-8 zeichen als anderer zeichensatz angenommenund dann in utf-8 gewandelt , was dann wieder was anderes ergibt. Bzw wenn ein zeichen nicht als utf-8 vorlag , dann wir es durch konvertieren der tabelle auch kein utf-8 .

Da haben wir ja schon das Problem .

Normalerweise gab das noch nie so ein Problem bei mir.

Erstens muss du sichestellen das UTF-8 Zeichen in der
Datenbank landen.

Wie mach ich das denn?

Dann musst du sicherstellen das du auch die seite mit UTF-8
wieder auslieferst.

Das habe ich ja mit html gemacht im php-Code.

und das convertieren mit SQL von latin in utf-8 kann alles
zerstören. denn dann wird das eigentliche utf-8 zeichen als
anderer zeichensatz angenommenund dann in utf-8 gewandelt ,
was dann wieder was anderes ergibt. Bzw wenn ein zeichen nicht
als utf-8 vorlag , dann wir es durch konvertieren der tabelle
auch kein utf-8 .

Gut zu wissen. :wink:

Gruß

Polonium7.2

Da haben wir ja schon das Problem .

Normalerweise gab das noch nie so ein Problem bei mir.

Weil du es normalerweise wohl ganz woanders gemacht hast , etc etc . Von alleine passiert es jedenfals nicht, so schlau sind computer nicht.

Erstens muss du sichestellen das UTF-8 Zeichen in der
Datenbank landen.

Wie mach ich das denn?

Wenn du mit SET Name UTF-8

Die dinger via PHP schreibst sind sie auf jedenfall UTF-8 :smile:

Dann musst du sicherstellen das du auch die seite mit UTF-8
wieder auslieferst.

Das habe ich ja mit html gemacht im php-Code.

nein, in deim code war der HTML Header ausgezeichnet.
Das hat aber nix damit zu tun wie der Server deine Zeichen sendet.

ASCII 1 BYTE , UTF-8 2 Byte. Dann gibt es noch UTF-8 mit Boom oder Ohne Boom.

Also machen wir das mal Dingfest.

<?php /*! tabelle
\* idx = int(11) , auto\_increment | primary \* daten = text \*/ /\*! database vars \* \*/ $dbs = array( 'host'=\>'localhost', 'db'=\>'mybase', 'user'=\>'user', 'pass'=\>'pass', 'table'=\>'tabelle' ); /\*! connect to db \* \*/ if (!$dblk=mysql\_connect($dbs['host'],$dbs['user'],$dbs['pass'])) { echo "Keine Datenbank"; exit; } else { /\*! Datenbank auswählen \* und auf UTF-8 kommunikation umstellen. \*/ mysql\_select\_db($dbs['db']); mysql\_query('SET NAMES \'utf8\''); } // insert db function insertSQL($sql) { if ( !$res=mysql\_query($sql)) { echo "Error -\> ".$sql; exit; } return mysql\_insert\_id(); } // get single entry from db function getEntrySQL($sql) { $aEntry = array(); if ( !$res=mysql\_query($sql)) { echo "Error -\> ".$sql; exit; } while ($row = mysql\_fetch\_array($res,MYSQL\_ASSOC)) { $aEntry=$row; } return $aEntry; } $therow=array('idx'=\>"",'daten'=\>""); if (isset($\_POST['daten'])) { $sql = "INSERT INTO ".$db['table']." VALUES('','".$\_POST['daten']."')"; $index=insertSQL($sql); $sql = "SELECT idx,daten FROM ".$db['table']." WHERE idx=".$index; $therow = getEntrySQL($sql); } header("Content-Type: text/html; charset=utf-8"); ?\> Test #daten {width:500px; height:300px;} <?php echo $therow['daten']; ?>

Daten:
Eintragen

<?php /* ende */
?\> ungetestet ... .. übrigens wenn du was in php dateien direkt schreibst also z.b. INSERT INTO ... VALUE('äüöß'); müssen das auch eine UFT-8 dateien sein sonst ist das ü kein ü in utf-8 :smile: Und ein Editor der das UTF-8 Format beherscht ist Pflicht.

Servus,

alleine die Tatsache, dass der Server den Spaltennamen ‚name‘ akzeptiert zeigt, das bei dir was Grundsätzliches schief läuft.

Fangen wir mal vorne an.
Plattform?
Serverversion?
Wie legst du die dbs an? phpmyadmin oder php-script,…

widecrypt