Da hier im Forum bereits öfters die Frage nach UTF-8 kommt, werde ich versuchen euch einige Grundlagen, was den Umgang mit UTF-8 angeht, bei zu bringen. 1. Das Script
Das Script könnt ihr einfach weiter so benutzen wie bisher. Hier ist aber nun Entscheident, das ihr eine Funktion braucht, die euch klar Anzeigt, ob ein String UTF-8 kodiert ist, oder nicht. Folgende Funktion tut dies:
Desweiteren ist der Umgang mit HTMLENTITES und HTMLSPECIALCHARS nicht mehr so einfach wie vorher. Hier zu könnt ihr die Funktion in folgenden Formen aufrufen:
Auch greifen die Stringfunktionen von PHP nicht mehr fehlerfrei, da UTF-8 auf Unicode basiert, und somit ein Zeichen nicht nur ein Byte haben kann. Hierfür gibt es nun die MultiBytefunktionen aus der MB-Bibliothek. Desweiteren kommen Funktionen für UTF-8 kodierung und decodeierung hinzu. (utf8_decode & utf8_encode)
Somit wäre das Script abgedeckt. 2. Die Homepage
Fehler entstehen meistens hier, wenn Daten übergeben werden. Diesen könnt ihr einfach vorbeugen wenn ihr:
sendet. Damit wären hier Fehler bereits ausgeschlossen. 3. Die Datenbank
Hier liegt auch oft ein Fehler. UTF-8 wird erst von einer mySQL-Version erst ab 4.1+ fehlerfrei unterstützt. Hier solltet ihr für Verbindung, und Tabellen meist folgende Kodierung fehlen: utf8_unicode_ci oder utf8_bin. Zudem, wie gesagt, sollte die Verbindung von PHP zu mySQL und zurück auf UTF-8 zurückgreifen. Solltet ihr euch da nicht sicher sein, wirkt ein einfaches SQL-Query
Code
1:
SET NAMES 'utf-8'
So, das ist somit das wichtigste zu UTF-8 und dürfte euch weiter helfen.
Bei Fragen stehe ich soweit ich kann gerne zu verfügnung, möchte aber auch bitten, das ich nicht zu jeden Problem die Lösung weiß. Wenn hier die Tipps hier beachtet, dürfte es aber keine bis kaum Probleme geben.
Post wurde schon 10x editiert, das letzte mal am 18.08.2007 um 08:51 von Teralios
? => Zeichen unbekannt! Warum, k.a eigentliuch sollte das € in UTF-8 vorhanden sein, was aber sein kann, ist das der eigentliche Text nicht als UTF-8 abgesendet wurde und dadurch diese Probleme auftretten!
Warum UTF-8 so selten verwendet wird, wird es garnicht. Nachteile gibt es zwar: Mehr Speicherplatz. Der Vorteil ist aber, das jedes verdammte Zeichen unterstützt wird!
Find ich super, dass du es versuchst zu erklären, aber sag mal, was machen denn diese zwei oberen Funktionen mit den ganzen [x... genau? Wozu genau sind die da? Warum kann man da nicht htmlentities() nehmen?
Das Script könnt ihr einfach weiter so benutzen wie bisher. Hier ist aber nun Entscheident, das ihr eine Funktion braucht, die euch klar Anzeigt, ob ein String UTF-8 kodiert ist, oder nicht. Folgende Funktion tut dies:
Prüft ob ein String UTF8 Kodierung enthält oder nicht.
UTF-8 ist eine andere Zeichenkodierung, die zur Familie der Unicode Zeichenkodierung gehört. Es ermöglicht mehr Zeichen als z.b ISO-8859-1 zu speichern und zu nutzen. Dabei lohnt sich die Verwendung nur dann, wenn man wirklich wenn man z.b Franzöisch, Deusch, Arabisch usw. in derSeite verwenden möchte. Benötigt man z.b aber nur Deutsch, ist es besser man nutzt ISO-8859-15
Eine Frage dazu in Zusammehang mit MySQL: Ist es normal, dass wenn man "(╯°□°)╯︵ ┻━┻" (siehe Link) in der DB speichert (z.B. über PHP), dass bei einem Feld mit dem Typ text "(╯°□°)╯︵ â”»â”â”»" drin steht und bei varchar dann das was man gespeichert hat?
Orginal von GameR
Das hab ich ehrlich gesagt noch nie getestet, ob Entities umgewandelt werden.
Mir erschließt sich aber nicht ganz der Sinn, warum du die Schriftzeichen als Entitites speicher willst.
Tu ich auch nicht, das ist das Command Board, das dies so macht. Ich hab nen Link angefügt und dort sieht man die Zeichen die ich meine. Diese werden in einem Feld mit dem Typ text umgewandelt - aber dann doch richtig angezeigt. Bei einem Feld mit dem Typ varchar werden die Zeichen genau so eingetragen, wie sie reinkommen.
edit: Ich hab jetzt mal ein Script geschrieben, dass es besser veranschaulicht:
PHP
1:
Input: Wie du siehst, ist hier nichts. (╯°□°)╯︵ ┻━┻ / Field type feld: Wie du siehst, ist hier nichts. ??°?°??? ??? / Field type varchar: Wie du siehst, ist hier nichts. (╯°□°)╯︵ ┻━┻
Diese Entities kommen von Command Board. Wenn man meinen geposteten Link öffnet, werden die Zeichen, die ich zurzeit meine, korrekt ausgegeben.
Post wurde schon 2x editiert, das letzte mal am 25.11.2012 um 17:23 von FalkenaugeMihawk