Seikilos
13-04-2008, 16:58
Ich habe Probleme, rauszubekommen, mit welcher Kodierung eine bestimmte Datei kodiert worden ist.
Ich habe eine Textdatei, die ist ISO kodiert, ich möchte dies rausbekommen, wenn ich jedoch ein mb_detect_encoding(implode("",file("meineDatei.txt")));[PHP]
so wird immer UTF-8 zurückgegeben, was aber nicht korrekt ist, oder es ist viel mehr korrekt, aber nicht das, was ich will.
Denn ich suche ja die Kodierung der Datei und nicht des Textes.
PHP-Desaster
13-04-2008, 21:06
Denn ich suche ja die Kodierung der Datei und nicht des Textes.Da gibt es keinen Unterschied, außer du schreibst eine UTF-8 BOM an den Anfang der Datei (nicht zu empfehlen, wenn es sich um PHP-Dateien handelt, die du einbindest). Wenn der Text UTF-8 Zeichen enthält, so erkennt die MB-Funktion das korrekt.
Vielleicht kannst du etwas genauer erläutern, was du vor hast!
Warum eigentlich nicht file_get_contents() ?
Seikilos
13-04-2008, 21:49
Ich hatte UTF-8 kodierten HTML Code in eine ISO Datei gespeichert.
Eine UTF-8 kodierte PHP Datei hat diese Datei eingelesen und ausgegeben -> Umlaute waren kaputt.
mb_detect_encoding ergab UTF-8 und dennoch konnt eich die Umlaute nicht sehen, wenn ich den String vorher mit utf8_encode konvertiere, kann ich ihn in der UTF-8 kodierten PHP Datei echon. Meine Überlegung war ja, dass alles ISO ist, aber mb_detect_string ergibt UTF-8 :/
Ich hatte UTF-8 kodierten HTML Code in eine ISO Datei gespeichert. Autsch! :D
Den Rest versteh ich nicht so ganz. Aber anstatt da irgendwas zu workarounden, solltest du es einfach mal vernünftig machen.
Hast du vielleicht htmlentities() auf die Datei angewendet? Das funktioniert bei UTF-8 nämlich nicht mehr so richtig und macht die Umlaute kaputt.
Wenn du es auf einen UTF-8-String anwendest, musst du$text = htmlentities($text, ENT_COMPAT, 'UTF-8');schreiben oder htmlspecialchars() verwenden.
Aber dein letzter Text lädt schon sehr zu einer gemütlichen Raterunde ein.
Seikilos
13-04-2008, 23:27
Hm, wie gesagt, es gibt keine zwischen Schritte.
Eine UTF-8 kodierte PHP Datei hat nur folgendes stehen
<?php
header ('Content-type: text/html; charset=utf-8');
$txt = implode("",file("text.txt"));
echo mb_detect_encoding($txt);
echo "<br />".$txt;
?>
Die Textdatei beinhaltet "Überschrift" als Text, gespeichert als Iso.
Output ist:
UTF8
Überschrift
Das macht mir zu schaffen, denn eigentlich müsste doch wegen dem Header ein UTF8 String doch normal aussehen.
Es gibt keine htmlentities oder ähnliches im Code