Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Dateikodierung prüfen? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Dateikodierung prüfen?


 
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!

 
$_Baker
13-04-2008, 21:24 
 
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 :/

 
TobiaZ
13-04-2008, 22:04 
 
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.

 
Manko10
13-04-2008, 22:08 
 
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

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:26 Uhr.