chinesische zeichen bringen mich zur verzweiflung :§



  • Guten abend liebe Community,
    Ich stehe kurz vorm Nervenzusammenbruch. ich habe ein programm geschrieben, dass dateien von meiner Homepage runterlädt, bearbeitet und wieder hochlädt. tja, ich dachte mir eigentlich, das wär kein problem. sollte es eigentlich auch nicht sein. aber leider musste ich feststellen, dass mein programm chinesische zeichen ausgibt. wenn es zb. jijin in eine datei schreiben soll, kommt sowas hier raus:
    楪楪
    was übersetzt so viel heißt wie "yeye"
    also das programm schreibt so:

    write.open("dat.html", ios_base::out | ios_base::app);
    write << endl << name;
    write.close();
    

    oben halt noch include fstream und cin name.

    wäre sehr erfreut über antworten.

    danke im vorraus.



  • Vll solltest du mal mehr als 3 Zeilen posten?

    z.bsp. wie sich "name" zusammensetzt - oder gibts noch andere Dinge, die in die Datei geschrieben werden...

    also ist write nen wofstream? also ist auch name nen wstring?

    bb



  • ja, von mir aus. ich hab alle zeilen, bis auf die folgenden rausgenommen, um die fehlerquelle zu testen und das, was da oben steht reicht völlig aus. aber ich kann ja mal den kompletten quelltext schreiben

    #include <iostream>
    #include <fstream>
    #include <windows.h>
    #include <string>
    
    using namespace std;
    
    int main()
    {
            DeleteFile("teilnehmer.html");
    	string name;
    	ifstream read;
    	ofstream write;
    
    	cout << "Bitte Namen eingeben: ";
    	cin >> name;
    
    	system("wget http://jijin.ji.funpic.de/lotto/teilnehmer.html");
    
    	Sleep(2000);
    
    	write.open("teilnehmer.html", ios_base::out | ios_base::app);
    		write << endl << name;
    	write.close();
    
    	return 1;
    }
    

    also, runterladen der datei funktioniert ohne fehler, aber beim schreiben kommen dann die fehler. ich hab den quelltext, wie schon gesagt, bis auf das minumum reduziert (außer die header) und es funktioniert nicht.



  • hmm... weiß ich auch nicht genau - sieht in meinen augen eigtl gar net ma so falsch aus...
    könnte mir nur vorstellen, dass es irgend nen konflikt mit dem encoding der html-site geben könnte - wirst du wohl mal den debugger benutzen müssen und ein wenig rumtesten...

    bb



  • es ist eigentlich auch nicht falsch. und in der html stehen nur ein paar wörter. da ich jetzt den fehler gefunden hab, kann ich eigentlich auch wieder ne .txt verwenden. da kommen aber die gleichen fehler.



  • jijin schrieb:

    es ist eigentlich auch nicht falsch. und in der html stehen nur ein paar wörter. da ich jetzt den fehler gefunden hab, kann ich eigentlich auch wieder ne .txt verwenden. da kommen aber die gleichen fehler.

    😮
    erklär ma noch mal, was jz nicht falsch ist und welchen fehler du jz gefunden hast und welche fehler denn jz doch noch da sind ^^

    bb



  • also, der quelltext ist richtig. da ist kein einziger fehler drin. nur es werden andauernd chinesische zeichen ausgegeben, die sogar teilweise einen sinn ergeben. ich hatte bisher auch schon eine andere vermutung, die kam, seitdem ich neu aufgesetzt habe (ca. vor 2 wochen). ich hatte plötzlich 2 neue schriftarten, die ich noch nie hatte (hab mit einer anderen cd installiert, weil meine zerkratzt ist). diese 2 schriftarten, sind chinesische schriftzeichen. ich hab jetzt mal einen anderen das programm testen lassen. wer hätte es gedacht, es klappt wunderbar. also ist die fehlerquelle eine der beiden schriftarten auf meinem pc, die das programm anscheinend als standard verwendet.

    nun eine andere frage. kann man das irgendwie ändern, also, dass er in courir new schreibt?



  • versuch mal binary rauszuschreiben



  • wie soll ich das denn anstellen? ich bin hobbyprogrammierer xD



  • write.open("teilnehmer.html", ios_base::out | ios_base::app | ios_base::binary);
    


  • GROßES THX, das klappt. ich geh mich jetzt erstmal etwas über ios_base::binary informieren, und was es da noch so gibt^^

    DANKE DANKE DANKE!!!


Anmelden zum Antworten