Entwickler-Ecke

Alle Sprachen - Alle Plattformen - Umlaute in Datenbank


ssb-blume - Mo 01.05.17 18:12
Titel: Umlaute in Datenbank
Hallo!
mein Provider hat die Internetseite auf einen anderen Server gestellt, Die Datenbank ist in UTF-8, eben so alle Tabellen.

Bei Ansehen muss ich feststellen, dass alle umlaute (auch ß) nicht dargestellt werden statt dessen wird eine schwarze Raute mit einem Fragezeichen gezeigt.
Ich habe nun alle Möglichkeiten probiert, die Zeichen headezimal angezeigt usw. Kein Erfolg:
Im Header steht der Zeichensatz utf-8;

Was ist hier los? wie kann ich die Umlaute wieder anzeigen??

Vorab schon Danke
Hansi


Moderiert von user profile iconTh69: Topic aus Datenbanken (inkl. ADO.NET) verschoben am Di 02.05.2017 um 15:42


Delete - Mo 01.05.17 18:33

- Nachträglich durch die Entwickler-Ecke gelöscht -


ssb-blume - Di 02.05.17 11:01

Genau das hatte ich gefragt, die Antwort also nicht gerade hilfreich.
ABER das hat mich angespornt, eine Funktion zu machen die auch wirklich funktioniert:


PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
<?php

function um_uni($from)  // in DB ist definitiv ein Zeichen >7F vorhanden!
{
 $x = '';
 $i = 0;
 for ($i = 0$i < strlen($from); $i++)
 {
    $k = ord($from[$i]);
    if ($k < 128)  {  $x .= $from[$i]; }  
    else
    {
        switch ($k)
       {
           case 228$x .= 'ä'break;
           case 246$x .= 'ö'break;
           case 252$x .= 'ü'break;
           case 196$x .= 'Ä'break;
           case 214$x .= 'Ö'break;
           case 220$x .= 'Ü'break;
           case 223$x .= 'ß'break;
       }
    }
 }
 return $x;
}
?>


Falls jemand eine bessere Lösung hat, - immer her damit!

Hansi


Th69 - Di 02.05.17 11:58

Hallo ssb-blume,

geht es dir denn um PHP-Code oder um C#-Code (weil du im C# und .NET-Bereich gepostet hast)?


hydemarie - Di 02.05.17 12:22

Falls PHP:

user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
Falls jemand eine bessere Lösung hat, - immer her damit!


http://php.net/manual/de/book.mbstring.php


ssb-blume - Di 02.05.17 14:50

definitiv php, habe die erste Sparte genommen, die Datenbank enthält. SORRY


ssb-blume - Di 02.05.17 14:59

hydemarie:

Wenn Du mein Beispiel gelesen hast, dann wirst Du merken, dass die ankommenden Zeichen alle in im Standard kommen, also die Umlaute auf der Tabelle > 128 und mit dem gleichen Byte.
Die Funktion macht also nichts anderes als einen vorhanden Bytecode in Integer zu wandeln und danach wieder in das Zeichen. Eigendlich Quatsch, aber es funktioniert.
Wer weiß wieso, ist mir auch egal.
hansi


hydemarie - Di 02.05.17 15:10

user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
Wer weiß wieso, ist mir auch egal.


Das ist ja ungefähr so das Problem ... :)


Delete - Di 02.05.17 16:59

- Nachträglich durch die Entwickler-Ecke gelöscht -


ub60 - Di 02.05.17 18:15

Eventuell hilft ja nach dem Aufbau der Verbindung die Umstellung auf UTF8:


PHP-Quelltext
1:
mysqli_set_charset($ConnectionID"utf8");                    

Das hatte seinerzeit bei uns die Probleme beseitigt.

ub60