Sven Rautenberg: Erkennen und Lesen von Unicode- und nicht Unicode-Dateien

Beitrag lesen

Moin!

* Wie kann ich erkennen, um was für ein Encoding es sich bei der
  Textdatei handelt?

Das Problem ist, dass utf-8 auch genausogut als vollkommen gültiges ASCII oder ISO-8859-1 betrachtet werden kann. Im Prinzip gibt es also nur zwei Möglichkeiten:
1. Du "weißt" es, weil du selbständig eine entsprechende Information über die in der Datei benutzte Zeichencodierungsform irgendwo mitspeicherst. Beispielsweise in einem HTML-Metatag.
2. Du weißt es nicht, und mußt raten.

Methode 2 ist dabei natürlich sehr stark abhängig von der Qualität des Ratemechanismus und insbesondere von den tatsächlichen Daten.

Beispielsweise könnte es sich dann um eine UTF-8-codierte Datei handelt, wenn relativ viele 7-Bit-ASCII-Zeichen vorkommen, und verhältnismäßig viele deutsche UTF-8-Umlaute (erkennbar am charakteristischen Tilde-A). Es kann keine UTF-8-Datei sein, wenn ungültige Bytewerte darin vorkommen.

* Muss ich Perl beim Einlesen sagen, dass da jetzt utf8 kommt, oder
  den eingelesenen String dann konvertieren?

UTF-8 bzw. Unicode ist eigentlich der zu bevorzugende Zeichenmodus, da dir in deinen UTF-8-Dateien ja durchaus Zeichen begegnen können, die in einer 8-Bit-Zeichencodierung nicht dargestellt werden können.

* Muss ich beim Schreiben was beachten? In welchem Encoding speichere
  ich die Dateien am Besten?

UTF-8.

  • Sven Rautenberg