Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP-MySQL - Umstellung auf UTF-8

Frage Entwicklung Webentwicklung

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

15.04.2007, aktualisiert 17.04.2007, 17246 Aufrufe, 19 Kommentare

Hallo zusammen,

nachdem der Admin hier ein schönes Tut zu UTF-8 geschrieben hat. Haben wir uns auch dazu entschlossen die Umstellung durchzuführen (ISO -> UTF-8). Ok, also eine kl. Datenbank genommen und diese komplett in UTF-8 umgewandelt. So, dann habe ich aus dem Tut die entsprechenden Zeilen für MySQL und PHP entnommen und bei uns eingefügt bzw. abgeändert.
Wenn ich nun im Internet Explorer die Seite öffne, habe ich das Problem mit ä,ö,ü,ß. Sprich es werden statt den entsprechenden Buchstaben seltsame Symbole angezeigt.
Der Server läuft mit Windows Server 2003 mit PHP und MyQL! Hat jemand von euch eine Idee, was ich vergessen bzw. falsch gemacht habe?!

Hier noch die Codezeilen, die wir ausgeführt haben.

php.ini:
01.
default_mimetype = "text/html" 
02.
default_charset = "UTF-8"
index.php
01.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
SQL:
01.
ALTER DATABASE `DATENBANK` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 
02.
ALTER TABLE `TABELLE`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 
03.
ALTER TABLE `TABELLE` CHANGE `FELD` `FELD` VARCHAR( 254 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;

Gruß
Dani
Mitglied: 17735
15.04.2007 um 14:40 Uhr
Hallo Dani,

wo treten diese Probleme denn auf? Bei Umlauten aus der Datenbank oder aus PHP-Dateien?

Gruß,
Ahnenforscher
Bitte warten ..
Mitglied: Dani
15.04.2007 um 15:24 Uhr
Hi,
also in der DB stehen die Zeichen richtig drinne!! => PHP.


Gruß
Dani
Bitte warten ..
Mitglied: 17735
15.04.2007 um 16:20 Uhr
Hallo Dani,

also wenn es an den Dateien liegt, musst due die Dateien natürlich auch mit UTF-8-Encoding speichern. Aber vielleicht hast du mich falsch verstanden: Ich meine nicht, ob die Zeichen in der Datenbank richtig sind, sondern ob der Inhalt, der mit Hilfe von PHP aus der Datenbank ausgelesen wird, Probleme macht, oder es die "echos" in PHP-Dateien sind.

Gruß,
Ahnenforscher
Bitte warten ..
Mitglied: Dani
15.04.2007 um 17:39 Uhr
Hi,
also ich benutze Notepad++. Dort habe ich die Koodierung auf UFT-8 umgestellt. Würde sonst ja nichts bringen.

sondern ob der Inhalt, der mit Hilfe von PHP aus der Datenbank ausgelesen wird, Probleme
macht, oder es die "echos" in PHP-Dateien sind.
Wie kann ich das am Besten herausfinden??


Gruß
Dani
Bitte warten ..
Mitglied: 17735
15.04.2007 um 18:10 Uhr
Wie kann ich das am Besten herausfinden??

Hallo Dani,

naja ganz einfach: schreibe in irgendeine Datenbanktabelle eine Zeichenkette mit Umlauten und anderen Sonderzeichen und lese das dann mit PHP aus.

Anschließend schreibst du in der PHP-Datei unter dem MySQL-Auslesen einen Echo-Befehl, z. B.

01.
echo "Sonderzeichentest aus PHP: äöüß";
Dann siehst du ja, ob es an Umlauten in der Datenbank oder in der PHP-Datei liegt.

Gruß,
Ahnenforscher
Bitte warten ..
Mitglied: Dani
15.04.2007 um 18:16 Uhr
Hi,
also mit "echo" gibt er die Zeichen ganz normal aus.
In der DB stehen die Zeichen auch richtig drinne. *grübel*


Gruß
Dani
Bitte warten ..
Mitglied: 17735
15.04.2007 um 18:22 Uhr
Sorry, aber jetzt verstehe ich dich nicht mehr:

echo und Datenbank wird richtig ausgegeben? Wo besteht denn dann dein Problem??

Gruß,
Ahnenforscher
Bitte warten ..
Mitglied: Dani
15.04.2007 um 18:28 Uhr
Also in der Datenbank stehen alle Zeichen richtig. Wenn ich nun in eine Datei echo "äüöß" mache, werden diese auch richtig angezeigt.
Das Problem muss in der Übergabe von SQL => PHP sein. Aber wo??


Gruß
Dani
Bitte warten ..
Mitglied: 17735
15.04.2007 um 18:39 Uhr
Hallo,

jetzt verstehe ich dein Problem: Das Umlaute-Problem besteht also beim Auslesen der Datenbank per PHP.

Hast du mal probiert, den Datenbank-String nicht direkt von PHP ausgeben zu lassen, sondern mit Hilfe von utf8_encode umzuwandeln? Also z. B.

01.
$output = utf8_encode($database);
Gruß,
Ahnenforscher
Bitte warten ..
Mitglied: Dani
15.04.2007 um 18:46 Uhr
Hi,
also so gehts wunderbar! Es liegt also an MySQL!! Was habe ich vergessen??


Gruß
Dani
Bitte warten ..
Mitglied: 17735
15.04.2007 um 18:51 Uhr
Hallo,

du musst den Zeichensatz von MySQL auf UTF-8 Unicode (utf8) setzen. Dies kannst du z. B. in PHPMyAdmin unter MySQL-Zeichensatz und Zeichensatz / Kollation der MySQL-Verbindung tun.

Gruß,
Ahnenforscher

PS: Ich bin hier auch gerade am konfigurieren von UTF-8 bei PHP und MySQL
Bitte warten ..
Mitglied: Dani
15.04.2007 um 18:59 Uhr
Das steht bereits auf UTF-8!!


GRuß
Dani
Bitte warten ..
Mitglied: 17735
15.04.2007 um 19:03 Uhr
Und wie siehts mit der Kollation (dem Zeichensatz) der einzelnen Tabellenspalten aus?

Standardmäßig sind die nämlich latin1_german1_ci. Und laut deinem Skript gang am Anfang hast du die einzelnen Tabellenspalten nicht angepasst?

Gruß,
Ahnenforscher
Bitte warten ..
Mitglied: Dani
15.04.2007 um 19:05 Uhr
Sorry...habe ich vergessen zu posten. Natürlich sind diese auf UTF-8 konvertiert.


GRuß
Dani
Bitte warten ..
Mitglied: 17735
15.04.2007 um 19:13 Uhr
Was ist mit den Einstellungen in der my.cnf?

Also character-set-server und default-character-set.
Die my.cnf bzw. my.ini liegt unter Windows meißt im WINDOWS-Verzeichnis.

Gruß,
Ahnenforscher
Bitte warten ..
Mitglied: Dani
15.04.2007 um 20:04 Uhr
Hi,
also so sehen die Zeilen bei mir aus:
01.
character-set-server 	= utf8 
02.
collation-server 		= utf8_general_ci 
03.
default-character-set 	= utf8

Gruß
Dani
Bitte warten ..
Mitglied: 17735
16.04.2007 um 16:00 Uhr
Hallo Dani,

ich hab mich mal heute morgen ein wenig für dich schlaugemacht - viel konnte ich allerdings auch nicht erfahren

Also, du kannst auf jeden Fall den Datenbankserver dazu zwingen, Inhalte im UTF-8-Format auszugeben, wenn du folgenden ersten Query ausführst:

01.
mysql_query("SET NAMES 'utf8'"); 
02.
mysql_query("SET CHARACTER SET 'utf8'");
Auf eine andere Art und Weise wird es wahrscheinlich nicht gehen, da, so wie ich gehört habe, dass ganze von der mysql-DLL-Datei abhängt, die PHP für die Verbindung mit dem MySQL-Server nutzt. Also egal, was auf dem Server eingestellt ist, erzwingt die mysql.dll von PHP den Server zum Senden der Daten im ISO-Format.

Probiers mal aus,

Gruß,
Ahnenforscher
Bitte warten ..
Mitglied: Dani
17.04.2007 um 00:21 Uhr
G' Abend,
wunderbar...so klappts es prima! Ich danke dir! Ich poste dieen Lösungsweg noch im Tut von Frank. OK?


Gruß
Dani
Bitte warten ..
Mitglied: 17735
17.04.2007 um 14:26 Uhr
Hallo Dani,

natürlich ist es OK, dass du diesen Lösungsweg im Tutorial von Frank postest

Gruß,
Ahnenforscher

PS: Bin seit neustem Moderator in diesem Bereich "Webentwicklung"
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
PHP
PHP MySQL Login (7)

Frage von Yanmai zum Thema PHP ...

PHP
gelöst PHP-MySQL - mysqli liefert einen Datensatz zu wenig (3)

Frage von Windows-Spieler zum Thema PHP ...

PHP
MySQL-Abfrage mit php: Wert + true bzw. false (2)

Frage von tomolpi zum Thema PHP ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...