Sven Rautenberg: utf-8 und Einbinden verschiedener Quellen

Beitrag lesen

Moin!

Da scheint die Formular-Eingabe der sicherste Weg zu sein.

Wenn es sich bei den Quellen um Erzeugnisse menschlicher Eingabetätigkeit handelt, dann ja. Textdateien beliebiger Encodingqualität sind ohne konkretes Tagging nicht sonderlich leicht zu behandeln.

Viel besser sieht es aus, wenn man maschinelle Quellen anzapft - die tendieren nicht dazu, ihr Encoding überraschend zu wechseln, sondern konsistent immer das gleiche zu verwenden. Einmal drauf eingestellt, und fertig.

Ansonsten überlege ich aber auch noch, ob es möglich ist durch einen immer
stattfindenden umfassenden Zeichenaustausch der Quellen (ggf. auch die
PHP-Möglichkeiten zur Konvertierung) alle Möglichkeiten abzudecken und zuletzt
bei utf-8 anzukommen.

Logisch, dass die Konvertierung nach UTF-8 stattfinden muß, anders kriegst du die beliebigen Encodings ja gar nicht gemischt. Wenn du das verwendete Encoding kennst, sollte dieser Schritt eigentlich auch problemlos funktionieren. PHP bietet z.B. ein Interface zur GNU Recode Bibliothek (wenn's allgemein bleiben soll) - und natürlich utf8_encode speziell für ISO-8859-1-Strings.

Hier noch ein Ansatz zur Erkenung von utf-8:
http://www.w3.org/International/questions/qa-forms-utf-8.en.php

Das ist ja "nur" der Regex, um zu prüfen, ob die Annahme, ein String sei UTF-8-codiert, auch zutrifft.

Da müßte ich wohl zuerst überlegen, was alles an Quellen möglich wäre, wenn
mit verschiedener Software einfacher Text gespeichert wird, ASCII, *.txt,
deutschsprachiger Raum, Windows, Mac, Linux. Oder würde so etwas viel zu
umfangreich oder bei begrenzter Auswahl doch wieder zu riskant?

Du hast im Prinzip immer dann Pech, wenn eine Datenquelle ihr Encoding nicht mitteilt. Und das ist in der Regel nur bei Textdateien der Fall. Formate wir Word haben ein bekanntes Encoding (kann man sicherlich irgendwo nachlesen), XML-Dateien sind zwar flexibel, aber erfordern die Encoding-Angabe im <?xml>-Header, sofern nicht UTF-8 verwendet wird.

- Sven Rautenberg

--
"Love your nation - respect the others."