Html-Datei bearbeiten



  • Hey,

    ich habe ein einfaches Programm geschrieben, das in einer HTML-Datei die Zeichen ö,ä,ü und ß maskiert (also beispielsweise wird aus "ö" ein "ö"). Die Original-Datei wird beibehalten, da mit einer veränderten Kopie gearbeitet wird.
    Das Programm ließt also die Datei ein und überprüft jedes Zeichen unter Benutzung einer if Abfrage, wie zum Beispiel:

    if(zeile=='ö') { dann maskiere dieses zeichen}
    

    (Zeile ist ein char array, in dem eine ganze Zeile aus der jeweiligen HTML Datei steht)

    Getestet habe ich das Programm, indem ich in eine .txt Datei einen HTML-Code eingefügt habe. Das hat alles wunderbar funktioniert. Benutze ich jedoch eine .html Datei, wird leider keine Änderung durchgeführt. Das heißt also, die if Abfragen ergeben immer false. Warum ist das so? Ich vermute, es hat vielleicht irgendwas mit Unicode zu tun? Da bin ich aber ganz neu auf dem Gebiet...

    Danke im Voraus und viele Grüße
    meickl


  • Mod

    Zeig mal mehr Code. Die eine Zeile die du geschrieben hast ist (wenn deine Beschreibung dazu stimmt) nämlich schonmal völliger Blödsinn.



  • @Seppj
    Ich denke, du hast den freundlichen Ausdruck "völliger Blödsinn" gewählt, weil in der einen Zeile das [i] fehlt und sie somit if(zeile[i]=='ö') heißen sollte..
    Mehr Code ist sicherlich sinnvoll, obwohl wie gesagt, nur die if-Abfrage nicht funktioniert. Ich schreib mal ein paar wenige Auszüge rein:

    ...
    char     zeile[1024]; //hier wird die Zeile einer Datei gespeichert
    
    while(fgets(zeile,1024, datei))	//Datei durchgehen
    {				
    for(int i=0;zeile[i]!='\0';i++)	//alle Buchstaben einzeln bis zum Zeilenende durchgehen
    ...
    
    if(zeile[i]=='ß') //wenn zeile[i] ein ß enthält, ersetzen
    {...}
    
    ...
    

    Nochmal: Das ganze funktioniert einwandfrei mit einer .txt Datei (die mit HTML-CODE gefüllt ist) aber nicht mit einer .html Datei



  • Beschäftige dich mal zuerst mit dem Encoding vom Textdateien (s. z.B. http://www.c-plusplus.net/forum/viewtopic-var-t-is-161855.html).
    Dein Source-Code funktioniert bisher nur für ASCII-Dateien bzw. ist abhängig von der Codepage (in deinem Sourcecode-Editor, d.h. wie intern das Zeichen 'ß' codiert wird).



  • @Th69
    genau das habe ich auch gedacht. Die von dir gepostete Seite habe ich bereits gelesen, wusste danach leider immernoch nicht, wie ich das konkret für mein Programmchen umsetzen kann 😞



  • Für solche Sachen gibt es einige Programmiersprachen deren Grundlagen man in einer halben Stunde intus hat und die diese Aufgabe in einem 1-3Zeiler lösen.
    Um dein Problem in C++ zu verstehen empfehle ich auch mal den Einsatz eines Debuggers um mal zu sehen was denn in zeile[i] so alles drinsteht. Wie das Zeichen 'ß' in einer Datei gespeichert wird hat nichts mit der Dateiendung zu tun.



  • brotbernd schrieb:

    Für solche Sachen gibt es einige Programmiersprachen deren Grundlagen man in einer halben Stunde intus hat und die diese Aufgabe in einem 1-3Zeiler lösen.

    zDu meinst am Ende Perl?



  • meickl schrieb:

    Ich vermute, es hat vielleicht irgendwas mit Unicode zu tun? Da bin ich aber ganz neu auf dem Gebiet...
    Danke im Voraus und viele Grüße
    meickl

    Kann sein, guck doch nach, in welchem Format deine html Seite gespeichert ist.


Anmelden zum Antworten