PHP-Entwicklung
Posts 1-10 of 16
- Back
- Next
-
Björn SchorreThe company name is only visible to registered members.Umwandlung deutscher Sonderzeichen
Hallo,
ich habe Daten aus einer mySQL-Tabelle (Kollation: utf8_general_ci) und dort kommen die deutschen Sonderzeichen (ä, ü, ö, ß) vor. Jetzt möchte ich diese umwandeln, aber der Aufruf
$filename = str_replace( 'ä', 'ae', $filename);
macht nicht dass was ich will.
Dateiname vorher: Löhne.pdf
Dateiname nachher: Löhne.pdf
Woran liegt das? Hat es etwas mit der Kollation der DB zu tun?
Mache ich ein echo $filename; ist alles i.O.
Gruß
Björn Schorre
- 12 Dec 2011, 08:44 am
-
R. JOCHIMThe company name is only visible to registered members.Re: Umwandlung deutscher Sonderzeichen
Moin moin,
Funktioniert das hier ?
$filename = str_replace( 'ä', 'ae', utf8_decode($filename) );
Gruß
Nachtrag: Da wird wahrscheinlich Unicode in einer Nicht-Unicode-Umgebung verarbeitet. Die gründlichere Lösung wäre PHP standardmäßig für Unicode zu konfigurieren und das Skript in Unicode zu speichern.
R.
This post was modified on 12 Dec 2011 at 09:40 am.- 12 Dec 2011, 09:26 am
-
Björn SchorreThe company name is only visible to registered members.Re^2: Umwandlung deutscher Sonderzeichen
Hallo,
danke für den Tipp. Ich werds heute Abend ausprobieren.
Auf meine Entwicklungsumgebung habe ich vollen Zugriff, aber kann die Umstellung auf Unicode auch bei unserem Webhoster durch mich gemacht werden?
Gruß
Björn Schorre
- 12 Dec 2011, 10:25 am
-
Steven WeingärtnerThe company name is only visible to registered members.Re^3: Umwandlung deutscher Sonderzeichen
Das konkrete Problem dürfte hier wirklich bei der Entwicklungsumgebung liegen.
Ihre PHP-Datei wurde von Ihrer IDE vermutlich als iso-8859-1 abgespeichert, das bedeutet im Code str_replace("ä", "ae" ...) wurde auch das von ihnen fest einkodierte "ä" als iso-8859-1 abgespeichert. In diesem Fall wird das iso-8859-1 "ä" dann mit dem UTF-8 "ä" aus der Datenbank vergleichen -> keine Übereinstimmung, also wird es nicht durch "ae" ersetzt.
Wenn Sie die PHP-Datei als utf-8 abspeichern müsste sich das Problem von selbst erledigen.
Ein kleiner Tipp, bei Eclipse (und allen darauf basierenden IDEs) können Sie die Standard-Kodierung unter "Window / Preferences / General / Workspace" ändern. Sie können das auch auf Projekt-Basis machen.
Beachten Sie aber, dass bei der Änderung der Kodierung einer Datei alle Umlaute in der Datei (z.B. in Kommentaren) unleserlich werden.
- 12 Dec 2011, 10:44 am
-
Eugen RieckThe company name is only visible to registered members.Re^4: Umwandlung deutscher Sonderzeichen
Die portabelste Alternative ist aus meiner Sicht
$filename = str_replace("\xC3\xA4", 'ae', $filename);
- $filename ist garantiert UTF8 (aus dem Kontext des OP)
- Der Zeichensatz des Scripts sollte keinen Einfluss seine Funktion haben, sonst können bei Providerwechsel etc böse Dinge (TM) passieren.
- 13 Dec 2011, 3:26 pm
-
Post visible to registered members
-
Frank Pöhler Premium MemberThe company name is only visible to registered members.Re: Umwandlung deutscher Sonderzeichen
Hallo,
bitte nicht Collation mit Charset gleichsetzen.
Die Collation gibt bei MySQL die Sortierreihenfolge an, wobei per Default auch das passende Charset gewaehlt wird. Dies ist aber nicht zwingend vorgegeben.
Weiterhin gibt es bei MySQL 4 Stellen, an denen Einfluss auf Charset und Collation genommen werden kann, was bei abweichenden Konfigurationen schnell zu Problemen mit dem Encoding fuehrt:
- Server (server- und clientseitig konfigurierbar)
- Database
- Table
- Column
Die MySQL Dokumentation enthaelt alle noetigen Informationen zu den einzelnen Faellen.
Viele Grüße,
Frank
This post was modified on 14 Dec 2011 at 08:54 am.- 14 Dec 2011, 08:50 am
-
Björn SchorreThe company name is only visible to registered members.Re^5: Umwandlung deutscher Sonderzeichen
Hi,
Danke erst einmal für die vielen Antworten. Ich werds morgen testen können.
@Eugen Rieck:
was bedeutet OP und TM ?
@Nikolaj Giebelhaus:
Natürlich haben Sie Recht. Aber ich habe die str_replace Funktuion dreimal hintereinander jeweils auf ä, ö, ü.
Gruß
Björn Schorre
This post was modified on 15 Dec 2011 at 08:00 am.- 15 Dec 2011, 07:57 am
-
Post visible to registered members
-
Guido Faust Premium MemberThe company name is only visible to registered members.Re^6: Umwandlung deutscher Sonderzeichen
An Stelle des dreifachen Aufrufs von str_replace können Sie auch Arrays mit den zu findenden und zu ersetzenden Zeichen verwenden.
Alternativ könnte man (je nach Kontext) auch iconv() mit der //TRANSLIT Option verwenden, hier werden dann auch noch eine Vielzahl anderer Zeichen umgewandelt.
- 17 Dec 2011, 11:22 pm
- Back
- Next
