Sven Rautenberg: utf-8 und Einbinden verschiedener Quellen

Beitrag lesen

Moin!

Gibt es Methoden solche Textblöcke -automatisch per PHP- verläßlich zu
analysieren (und dann ggf. zu konvertieren), oder wäre ein Umweg über eine
Formular-Eingabe der Texte sinnvoller?

Nein, es gibt keine verlässliche Methode. Das einzige, was du prüfen kannst, ist, ob ein Text Zeichen enhält, die nicht in UTF-8 kodiert sind. Damit kannst du praktisch prüfen, ob der Text UTF-8-kodiert ist oder nicht.

Das ist sowas wie eine notwendige, aber keine hinreichende Bedingung. Wenn Bytes vorkommen, die laut UTF-8-Schema illegal sind, dann kann es kein UTF-8 sein. Das heißt für den umgekehrten Fall aber nicht, dass es dann in jedem Fall UTF-8 ist.

Aber es gibt keine Methode, herauszufinden, welches Encoding ein Text hat.

Man kann natürlich "raten": Ein Encoding ist in der Regel mit typischen Sprachen verbunden, die eine gewisse Zeichennutzung aufweisen. Diese Muster kann man natürlich analysieren, und wieder durch Ausschlußverfahren wegstreichen, welches Encoding es dann vermutlich nicht mehr ist.

Das ist allerdings ziemlich "Magie". Als Anschauungsobjekt empfiehlt sich vielleicht, die Encoding-Rate-Routine des Firefox anzugucken. :)

Oder eben die strikte Vorgehensweise, das Encoding von den externen Quellen entweder fixiert festgelegt einzukalkulieren (der Fall des Scheiterns muß dann aber eingeplant werden), oder die Quellen übermitteln dynamisch ihr gewähltes Encoding (HTTP-Header wären z.B. der klassische Fall).

- Sven Rautenberg

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