doom4: Textdatei Importiert: Ersetzen von Sonderzeichen nicht moeglich

Hi,

ich hab folgendes merkwuerdiges Problem. Ich habe eine Textdatei in der HTML Code steht. Leider werden beim export aus einem Programm mit dem Namen Endnote nicht die Umlaute/Sonderzeichen in HTML Code exportiert. Daher lese ich die Datei ueber folgenden Code ein und versuche die Umlaute/Sonderzeichen selber zu ersetzen:

$raw = array("ä","ö","ü","Ä","Ö","Ü","ó","ß"," & ", "ó","é");
$hmtl = array("ä","ö","ü","Ä","Ö","Ü", "ß"," & ","ó","é");

$datei=fopen("tl_files/datenbank/".$name."_a.txt","r");           $ver=str_replace($raw,$hmtl,(fread($datei,filesize("tl_files/datenbank/".$name."_a.txt"))));
print($ver);
fclose($datei);

Das Merkwuerdige ist nun das keines der Umlaute/Sonderzeichen gefunden und ersetzt wird. Gebe ich zum Test einfach mal einen Buchstaben wie "a" an und ersetze es mit dem selber Skript durch z.b. "1" funktioniert es. Ich bin echt am Ende mit meinem Wissen. Hat jemand eine Ahunung?

Was komischerweise teilweise geht ist wenn ich utf8_decode auf den String anwende, jedoch wird mit dann zu beginn ein ? mit einer Leerzeile ausgegeben ausserdem werden so alle bis auf ein Sonderzeichen ein S mit einem umgedrehten Dach (vielleicht ein Buchstabe aus dem Osten?) ersetzt.

Hoffe mir kann jemand weiter helfen.

MFG Max

  1. Also ich habe nun "igittibaeh" Code geschrieben mit dem es zu funktionieren scheint:

    $datei=fopen("tl_files/datenbank/".$name."_a.txt","r");
    $ver=htmlspecialchars_decode(htmlentities(fread($datei,filesize("tl_files/datenbank/".$name."_a.txt"))));
    print($ver);
    fclose($datei);

    Wobei ich eigentlich sagen muss das mir dieser Code besser gefaellt, da ich nun nicht mehr neue Sonderzeichen hinzufuegen muss. Was sagt ihr dazu?

    Gruss

  2. echo $begrüßung;

    ich hab folgendes merkwuerdiges Problem. Ich habe eine Textdatei in der HTML Code steht. Leider werden beim export aus einem Programm mit dem Namen Endnote nicht die Umlaute/Sonderzeichen in HTML Code exportiert.

    Warum sollten sie? Ist etwa außerdem die verwendete Zeichenkodierung nicht angegeben worden?

    Daher lese ich die Datei ueber folgenden Code ein und versuche die Umlaute/Sonderzeichen selber zu ersetzen:

    $raw = array("ä","ö","ü","Ä","Ö","Ü","ó","ß"," & ", "ó","é");

    In welcher Kodierung liegen die Eingangsdaten vor? Welche Kodierung verwendest du für dein Script?

    Das Merkwuerdige ist nun das keines der Umlaute/Sonderzeichen gefunden und ersetzt wird.

    Wird daran liegen, dass keine Übereinstimmung zustande kommt. Beispielsweise verwenden UTF-8 und ISO-8859-1 nur die ersten 128 Bytewerte gemeinsam, und die Umlaute liegen außerhalb davon.

    Was komischerweise teilweise geht ist wenn ich utf8_decode auf den String anwende, jedoch wird mit dann zu beginn ein ? mit einer Leerzeile ausgegeben

    Das kann daran liegen, dass da ein Zeichen nicht richtig UTF-8-kodiert ist. Kann aber auch andere Ursachen haben. Ein Hexdump sollte Aufschluss geben.

    ausserdem werden so alle bis auf ein Sonderzeichen ein S mit einem umgedrehten Dach (vielleicht ein Buchstabe aus dem Osten?) ersetzt.

    Das Zeichen Š kommt in ISO-8859-1 nicht vor, kann also nicht von UTF-8 nach ISO-8859-1 umkodiert werden.

    Wenn es keine Möglichkeit gibt, die verwendete Kodierung beizubehalten - was immer der bevorzugte Weg sein sollte - wäre es günstig, du schaust dir die Funktion htmlentities() an, und da auch mal die optionalen Parameter jenseits der ersten Stelle.

    echo "$verabschiedung $name";

    1. echo $begrüßung;

      Wenn es keine Möglichkeit gibt, die verwendete Kodierung beizubehalten - was immer der bevorzugte Weg sein sollte - wäre es günstig, du schaust dir die Funktion htmlentities() an, und da auch mal die optionalen Parameter jenseits der ersten Stelle.

      Allerdings ist es in diesem Zustand schon zu spät, noch Entities oder NCRs aus einigen aber nicht allen Zeichen des HTML-Textes zu machen. Versuch doch lieber, das Problem richtig zu lösen: Zeichen so lassen wie sie sind und die verwendete Kodierung korrekt angeben.

      echo "$verabschiedung $name";